【PHP】 文字列のエスケープ
addslashes関数の使い方(文字列をエスケープする)
php3~ で使用できます。
addslashes関数 : 書式
addslashes(文字列)
戻り値:エスケープされた文字列
addslashes関数は文字列をエスケープします。エスケープされる文字は、以下の通りです。
- シングルクォーテーション(')
- ダブルクォーテーション(")
- バックスラッシュ(\)
- NULL
用途としてSQL文エスケープする場合はaddslashes関数ではなく、mysql_real_escape_string関数など、エスケープ用に用意された関数を使うようにします。
バックスラッシュ(\)もエスケープされるので、Shift_JISの漢字コードで「0x5c(\)」を含む文字(例:「表」)もエスケープされる点に注意が必要です。
addslashes関数 : 使用例
- 文字列をエスケープするecho addslashes("I'll be back"); →「I\'ll be back」を出力
echo addslashes("表示"); →「表\示」を出力(Shift_JISの場合)
echo addslashes(chr(92)); →「\\」を出力(chr(92)は「\」)
echo addslashes("\1,000"); →「\1,000」を出力(「\」は全角)
参考
- 文字列をC言語と同様にエスケープするecho addslashes("ABCDE", "A..C"); →「\A\B\CDE」を出力
echo addslashes("ABC12345", "12"); →「ABC\1\2345」を出力
C言語と同様の方法で文字列をエスケープする関数に addslashes関数があります。指定した文字がエスケープされます。
stripslashes関数の使い方(文字列のエスケープを解除する)
php3~ で使用できます。
stripslashes関数 : 書式
stripslashes(文字列)
戻り値:エスケープが解除された文字列
stripslashes関数は文字列のエスケープを解除します。前述のaddslashes関数の逆の処理をします。majic_quotes_gpcの設定がOnの場合はフォームから送信されたデータがエスケープされるので、stripslashes関数によるエスケープの解除を行うことがあります。ただすべてのデータをエスケープ解除する必要はないので、get_majic_quotes_gpc関数でget_majic_quotes_gpcの設定がOnかOffかを調べて処理を分岐させると良いでしょう。
stripslashes関数 : 使用例
- 文字列のエスケープを解除する$str = addslashes("表示"); →変数$strに「表\示」をセット(Shift_JISの場合)
echo stripslashes($str); →「表示」を出力
- フォーム入力値のエスケープを解除する$str = $_POST["name"];
if (get_majic_quotes_gpc()) {
$str = stripslashes($str);
}
echo $str; →エスケープ解除後の値を出力
関連リンク
PHPトップページ
PHP入門 & 関数リファレンス
PHPの初心者からベテランまで活用できるページです。初めての方はもちろん、もう一度基礎から学びなおしたい方は、基礎知識のページを順に読んで理解しましょう。ベテランの方向けには、関数の書式・パラメーターを調べられる構成になっています。PHPプログラム作成時にご活用下さい。