ホーム > ブログ > タグ : PHP

PHPでクッキーに複数の値を一括登録する方法を2つ紹介します。

1. 連想配列形式でクッキーに登録

setcookie("status[height]", 167);
setcookie("status[weight]", 50);
setcookie("status[sight]", 1.2);

クッキーの内容を確認
print_r($_COOKIE['status']);

出力結果
Array
(
    [height] => 167
    [weight] => 50
    [sight] => 1.2
)

2. シリアル化してクッキーに登録

$status = array(
	"height" => 167,
	"weight" => 50,
	"sight" => 1.2
);
setcookie("status", serialize($status));

クッキーの内容を確認するときは、シリアル化された文字列を復元します。
print_r(unserialize($_COOKIE['status']));

出力結果
Array
(
    [height] => 167
    [weight] => 50
    [sight] => 1.2
)

CakePHPで開発を行っているとプリントデバッグにはpr()ばかり使用してしまいがちですが、
よりデバッグに向いているdebug()が用意されてます。

ノーマルに出力

まずは、普通にdebugしてみます。
結果はpr()と同じになります。

サンプルコード:
$vars = array("dog", "cat", "monkey");
debug($vars);

出力結果:
Array
(
    [0] => dog
    [1] => cat
    [2] => monkey
)


‘<'と'>‘をHTML特殊文字に変換して出力

第2引数にtrueを渡すと、
変数の中身に含まれる’<'は'&lt;‘に、’>'は’&gt;‘に変換して出力してくれます。
※デフォルトはfalse

サンプルコード:
$var = '<img src="/img/hoge.jpg">';
debug($var, true);

出力結果:
<img src="/img/100217_1.jpg">

‘<'と'>‘がHTML特集文字に変換されているので、
imgタグはHTMLタグとして評価されず、
ブラウザ上に画像は表示されません。

ファイル名と行番号を一緒に出力

第3引数にtrueを渡すと、debugを記述したファイル名と行番号を合わせて表示してくれます。
※デフォルトはfalse

サンプルコード:
$var = "Hello world!!";
debug($var, false, true);	

出力結果:
app/controllers/hoges_controller.php (line 199) 
Hello world!!

これはプリントデバッグを複数仕込んだときに各々を識別するのに便利です。

以上です。

※debug()は、app/config/core.phpで定義したデバッグ変数「debug」が0より大きい場合にのみ有効です。

実行環境
CentOS 5.3
CakePHP 1.3.0-beta

PHPの組み込み関数「strip_tags」を使えば、
文字列から HTML および PHP タグを簡単に取り除くことができます。

<?php
$str= '<html><body><p><a href="/hoge">Hello!!</a></p></body></html>';
echo strip_tags($str);
?>

出力結果:
Hello!!


特定のタグを許可する場合は、
第2引数に渡します。

pタグとaタグを許可する。
echo strip_tags($str, '<p><a>');

出力結果:
<p><a href="/hoge">Hello!!</a></p>