PHP | htmlspecialchars()でHTMLをエスケープする方法

PHPのhtmlspecialchars()関数を使ってHTMLの特殊文字をエスケープする方法とhtmlspecialchars_decode()関数でエスケープした文字列をデコードする方法の簡単なサンプルコードになります。

htmlspecialchars()関数はHTMLそのものを表示したい場合、フォームから送信する時やデータベースに保存したりJSONコードに変換する際に良く利用されます。

htmlspecialchars()でHTMLをエスケープする

htmlspecialchars()関数はHTMLタグを含む文字列からタグの特殊文字をHTMLエンティティに変換します。

エスケープされたHTMLコードはブラウザ上で解釈され、HTMLタグを文字列として表示します。

オプション引数にて変換する条件などを指定する事が可能です。
下記のサンプルコードでは「ENT_QUOTES」を指定し、シングルクオートとダブルクオートを共に変換するように指定しています。

$data = htmlspecialchars('<p>BANANA</p>', ENT_QUOTES);
echo $data;
// <p>BANANA</p>
オプション引数備考
ENT_COMPATダブルクオートを変換する。
シングルクオートを変換しない。
ENT_QUOTESシングルクオートとダブルクオートを変換する。
ENT_NOQUOTESシングルクオートとダブルクオートを変換しない。
ENT_SUBSTITUTE無効な符号単位シーケンスを含む文字列を渡した場合、 空の文字列を返すのではなくUnicode の置換文字に置き換える。
ENT_DISALLOWED指定した文書型において無効な符号位置を、Unicode の代替文字である U+FFFD (UTF-8) あるいは &#xFFFD;に置き換える。
ENT_HTML401コードをHTML4.01として処理する。
ENT_XML1コードをXML1として処理する。
ENT_XHTMLコードをXHTMLとして処理する。
ENT_HTML5コードをHTML5として処理する。

htmlspecialchars_decode()でHTML文字をデコードする

htmlspecialchars_decode()関数ははhtmlspecialchars()関数などで変換したHTML文字を元に戻します。

デコードするデータはhtmlspecialchars()関数が使われている必要はありません。

$data = htmlspecialchars('<p>BANANA</p>', ENT_QUOTES);
$html = htmlspecialchars_decode(data);
// BANANA

PHP,PHP 文字列

Posted by Yousuke.U