【PHP】addslashes/stripslashes関数の使い方(文字列のエスケープ)

アイキャッチ画像escapePHP
この記事は約3分で読めます。
スポンサーリンク

【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プログラム作成時にご活用下さい。
タイトルとURLをコピーしました