PHPのHTMLエスケープ


「4.5.1HTML」からのメモ。


PHPにはHTML中の文字をエスケープするための関数がいくつかあります。

htmlentities()

空白文字を除く<や>をエンティティに変換します。
('はENT_QUOTESを指定した場合のみ)

<?php
$hoge = htmlentities("< > & \" ' Ä" , ENT_COMPAT , "UTF-8");
echo "$hoge\n";

#デコード
$decode_table = array_flip(get_html_translation_table(HTML_ENTITIES , ENT_COMPAT));
$decode_hoge = strtr($hoge , $decode_table);
echo "$decode_hoge\n";
?>
&lt; &gt; &amp; &quot; ' &Auml;
< > & " ' 

htmlspecialchars()

< , > , & , " , 'のみをエンティティに変換します。
('はENT_QUOTESを指定した場合のみ)

<?php
$hoge = htmlspecialchars("< > & \" ' Ä" , ENT_COMPAT , "UTF-8");
echo "$hoge\n";

#デコード
$decode_table = array_flip(get_html_translation_table(HTML_SPECIALCHARS , ENT_COMPAT));
$decode_hoge = strtr($hoge , $decode_table);
echo "$decode_hoge\n";
?>
&lt; &gt; &amp; &quot; ' Ä
< > & " ' Ä

strip_tags()

HTMLタグを除去します。第2引数に除去しないタグを指定することができます。

<?php
$hoge = strip_tags("<p>hello <b>world</b></p>" , "<b>");
echo "$hoge\n";
?>
hello <b>world</b>