php:phpで時間帯によって表示内容を変更する

WEBサイトを作成していると時間帯によって表示の仕方を変えたい場合があります。

phpでは時間を指定して、朝と夜でサイトのイメージを変えたり、
表示している文言を変更したりすることが可能です。
※サーバ内の時間を参照しているので、そこは注意が必要です。


phpで時間を指定して表示内容を変える

下記は6時~18時、18時~6時で表示する内容を
変更して出力する場合です。

date()関数で現在の時間のみを取得します。
date(‘H’)で取得すると00~23の値を取得するので、
intval()関数で整数の値を取得しています。

// 現在の時間を取得する
$time = intval(date('H'));

if文で時間帯によって処理を分岐します。

// 6時~18時の時間帯の処理
if (6 <= $time && $time <= 17) {
	echo '6時~18時までの処理';
}
// それ以外(18時~6時まで)の時間帯の処理
else {
	echo '18時~6時までの処理';
}

また、時間帯を細かく設定したい場合、elseifで時間帯を追加すれば
上記以外の時間帯でも表示したい内容を切り替えることができます。


時間の他にも、現在の月などを取得すれば季節ごとに処理を変更することも可能です。

php:phpでクッキー($_COOKIE)を削除する方法

phpでデータを格納する場合にクッキーcookie)を使用することがあります。

クッキーとは、ユーザのパソコン内にデータを保存させることです。

プログラム内でクッキー$_COOKIE)に格納した
データを削除する方法をメモします。
phpsetcookie()を使用します。


クッキーを削除

$_COOKIEに’hoge’という要素のデータがある場合は
下記のように指定します。

setcookie('hoge', '', time() - 1800);

有効期限を現在の時間よりも前の時間に設定することで
クッキーを削除することができます。


クッキーを設定

$_COOKIEの’hoge’という名前を付けて値を格納する場合は
下記のように設定します。

setcookie('hoge', '格納する値', time() + 1800);

名前、格納する値、有効期限を設定しています。


クッキーの値を取得

$_COOKIEから’hoge’のデータを取得する場合は
下記のように設定します。

$value = $_COOKIE['hoge'];

$valueにクッキーに保存した’hoge’の値を
取得することができます。


php:PDFファイルの出力とダウンロード

phpPDFファイルをブラウザで出力させる方法と
PDFファイルダウンロードさせる方法をメモします。

出力とダウンロードするには、phpのheader()関数を使用して出力します


phpでPDFファイルをブラウザで出力

// 読み込むPDFファイルを指定
$file = 'hoge.pdf';

// PDFを出力する
header("Content-Type: application/pdf");

// ファイルを読み込んで出力
readfile($file);

exit();

ブラウザで指定したPDFファイルの内容を出力します。


phpでPDFファイルをダウンロード

// 読み込むPDFファイルを指定
$file = 'hoge.pdf';

// ダウンロードするダイアログを出力
header("Content-Disposition: attachment; filename=download.pdf");

// ファイルを読み込んで出力
readfile($file);

exit();

download.pdfをダウンロードするダイアログが表示され、
ダウンロードすることができます。


php:XMLファイルのデータを取得し、配列に変換する

phpXMLファイルのデータを取得し、配列に変換する方法を行いました。
あまり頻繁には使用しないと思うのでメモします。

今回は下記のphpの関数を使用しています。

simplexml_load_file()
simplexml_load_string()
get_object_vars()

XMLファイルのデータが下記のような場合

<?xml version="1.0" encoding="UTF-8"?>
<test>
    <title>raining</title>
    <link>http://raining.bear-life.com/</link>
    <description>日常で感じたこと、覚えたことの記録</description>
    <language>ja</language>
</test>

XMLファイルから配列に変換

simplexml_load_file()」関数を使用し、「test.xml」のデータを取得します

$object = simplexml_load_file('test.xml');

simplexml_load_file()」で取得した値はオブジェクトで取得されます。
取得した値は下記のようになります。

SimpleXMLElement Object
(
    [title] => raining
    [link] => http://raining.bear-life.com/
    [description] => 日常で感じたこと、覚えたことの記録
    [language] => ja
)

上記で取得した$objectを「get_object_vars()」関数を使用し、
配列に変換します。

$arr = get_object_vars($object);

get_object_vars()」で取得した値は下記のように配列で取得されます。

Array
(
    [title] => raining
    [link] => http://raining.bear-life.com/
    [description] => 日常で感じたこと、覚えたことの記録
    [language] => ja
)

XMLデータ文字列から配列に変換

simplexml_load_string()」関数を使用し、XMLデータ文字列をオブジェクトに変換します。

$str = '<?xml version="1.0" encoding="UTF-8"?>
<test>
<title>raining</title>
<link>http://raining.bear-life.com/</link>
<description>日常で感じたこと、覚えたことの記録</description>
<language>ja</language>
</test>';

$object = simplexml_load_string($str);

取得したオブジェクトを「get_object_vars()」関数を使用し、
配列に変換します。

$arr = get_object_vars($object);

get_object_vars()」で取得した値は下記のように配列で取得されます。

Array
(
    [title] => raining
    [link] => http://raining.bear-life.com/
    [description] => 日常で感じたこと、覚えたことの記録
    [language] => ja
)

※「get_object_vars()」で配列に変換できるのは1階層までしか変換できないみたいです。

php:文字列の先頭、末尾の半角全角スペース削除

phpで入力された文字列などの前後のスペースを除去する場合のメモです。

phpでは「trim()」という関数がありますが、半角のスペースは削除してくれるのですが、
全角のスペースは削除されません。
半角のスペースのみ削除する場合はtrim()でいいと思います。

なので、今回は文字列先頭、末尾にある半角・全角スペース
正規表現を使用し削除する方法をメモします。


先頭、末尾の半角・全角スペース削除

・先頭の半角・全角スペース削除

$str = preg_replace('/^[  ]+/u', '', $str);

“^[  ]”で行頭が半角スペース、または全角スペースで始まる文字に一致させます。
“+”で直前の文字の1回以上の繰り返しに一致させます。
上記で一致した値を空文字で置換しています。


・末尾の半角・全角スペース削除

$str = preg_replace('/[  ]+$/u', '', $str);

“[  ]+”で半角スペース、または全角スペースの1回以上の繰り返しに一致させます。
“$”で末尾を示すので末尾が半角全角スペースの場合に一致します。
上記で一致した値を空文字で置換しています。


上記の両方を行うことで先頭、末尾の半角・全角スペースを削除することができます。

$str = preg_replace('/^[  ]+/u', '', $str);
$str = preg_replace('/[  ]+$/u', '', $str);

上記を関数にした場合

対象の文字列を作成した関数の引数で渡し、
スペースを削除した値をリターンします。

function space_trim ($str) {
	// 行頭の半角、全角スペースを、空文字に置き換える
	$str = preg_replace('/^[  ]+/u', '', $str);

	// 末尾の半角、全角スペースを、空文字に置き換える
	$str = preg_replace('/[  ]+$/u', '', $str);

	return $str;
}