htmlspecialchars関数は特殊文字を HTML エンティティに変換します。
ユーザーからの入力を返す場合には脆弱性対策として使用しなければなりません。
なお、「ENT_QUOTES」は「シングルクオート」と「ダブルクオート」を共に変換するオプションです。
function h($str) { return htmlspecialchars($str, ENT_QUOTES, "UTF-8"); }
$str = h($str);
function h($str) { if( is_array($str) ) { return array_map("h", $str); } else { return htmlspecialchars($str, ENT_QUOTES, "UTF-8"); } }
//入力データ $str2 = "<br>"; print_r(h($str2));
//出力データ <br>
//入力データ $str1 = array("one<br>", "<b>two</b>", '"three"', "'four"); print_r(h($str1));
//出力データ Array ( [0] => one<br> [1] => <b>two</b> [2] => "three" [3] => 'four )
PHP5.4にて、htmlspecialchars()関数の仕様が変更されました。
第3引数の文字エンコーディングの取り扱い方が変わっています。
文字エンコーディングのオプションを正しく設定していない場合、出力が空になります。
したがって、第3引数の指定が必須となります。