htmlspecialcharsについて
htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = TRUE ]]] ) : string
・特殊文字を HTML エンティティに変換する。
・第二引数は、フラグ定数でクォートや無効な符号単位シーケンス、そして文書型の扱いを指定する。 デフォルトは ENT_COMPAT | ENT_HTML401
フラグ定数名 | 説明 |
---|---|
ENT_COMPAT | ダブルクオートはエスケープするが、シングルクオートはしない |
ENT_QUOTES | ダブルクオートもシングルクオートも両方エスケープする |
ENT_NOQUOTES | ダブルクオートもシングルクオートもエスケープしない |
ENT_HTML401 | HTML 4.01 として処理 |
ENT_HTML5 | HTML 5 として処理 |
変換前と変換後
-
<
→<
-
>
→>
-
&
→&
-
"
→"
・第二引数に ENT_QUOTES を指定すると、下記の変換も行う。
-
'
→'
or&apos
;
・第三引数は、文字エンコーディングを定義。
変換する理由
- XSSを防ぐため。
- テキストで入力されたものを正しくHTMLに出力するため。
使用例
//次の様なラッパー関数を準備する
function h($str) {
return htmlspecialchars($str, ENT_QUOTES|ENT_HTML5, "UTF-8");
}
// HTMLに出力する際
echo h('<hoge>');