入力フォームからの文字データには文字データ以外にもhtml文など「テキスト以外」のものが入っている場合があります。
それが必要な場合もありますが、そういった「テキスト以外」が不要な場合には
「テキスト以外」が機能しないようにして文字のみを表示するようにする関数があります。
こういう処理をサニタイズというのですがPHPでは「htmlspecialchars」で簡単に行えます。
サニタイズする方法
■htmlspecialchars
使い方は以下のようになります。
htmlspecialchars(フォームから受け取った文字列の変数);
返ってくる値はhtmlタグを無効化変換した文字列の変数です。
具体的な例を書いてみます
例1:
<?php $data='<a href="test.php">リンク</a>と'."<strong>ストロング</strong>のサンプルです"; $moji=htmlspecialchars($data); print $data; echo "<BR><BR>\r\n"; print $moji; echo "<BR><BR>\r\n"; ?>
このサンプルは一行目はそのままのリンクやストロングが有効なままの表示です。
二行目には一行目にhtmlspecialcharsをかけてリンクやストロングを無効にした表示になっています。
ソースは以下のように変換されています。
<a href=”test.php”>リンク </a> と<strong >ストロング</strong >のサンプルです<BR ><BR>
<a href=" test.php">リンク </a> と<strong >ストロング</strong >のサンプルです<BR ><BR>
「<」がhtml上で表示される「<」と変換したりして<a href=””>等をタグとして機能しないようにしています。
■htmlspecialchars_decode
逆にhtmlspecialcharsで変換したデータを元に戻すには
「htmlspecialchars_decode」関数を使います。
htmlspecialchars_decode(htmlspecialcharsをかけた変数);
例1で$mojiに入れた文字を$dataに戻す為には
$rev=htmlspecialchars_decode($moji);
で$revに$dataと同じデータが入ります。
htmlspecialcharsの利点はhtmlspecialchars_decodeを使えば戻せる点でしょうか?
次は消去する方法を紹介します。