PHP 独自のライブラリ関数 addslashes() とtripslashes() はどちらも文字列処理関数であり、まったく逆の効果があります。
addslashes(): 入力文字列内の特定の定義済み文字の前にバックスラッシュを追加します。この処理は、データベース クエリ ステートメントなどのニーズに対応します。これらの事前定義された文字は、一重引用符 (')、二重引用符 (")、バックスラッシュ ()、NULL です。
stripslashes():addslashes() 関数によって追加されたバックスラッシュを削除します。この関数は、データベースまたは HTML フォームから取得したデータをクリーンアップするために使用されます。 (バックスラッシュが 2 つ連続している場合は、1 つを削除して 1 つを残します。バックスラッシュが 1 つしかない場合は、直接削除します。)
追記: デフォルトでは、PHP 命令の magic_quotes_gpc がオンになっており、すべての GET、POST、COOKIE データに対して addslashes() が自動的に実行されます。 magic_quotes_gpc によってエスケープされた文字列に対して addslashes() を使用しないでください。二重エスケープが発生するためです。この状況が発生した場合は、関数 get_magic_quotes_gpc() を使用して検出できます。例:
if (get_magic_quotes_gpc()){ code.... }
addslashes() 例:
<?php $str = "Who's John Adams?"; echo $str . " This is not safe in a database query.<br />"; echo addslashes($str) . " This is safe in a database query."; ?>
出力:
John Adams とは何ですか? これはデータベース クエリでは安全ではありません。
John Adams とは何ですか? これはデータベース クエリでは安全です。
stripslashes() 例:
<?php echo stripslashes("Who\'s John Adams?"); ?>
出力:
ジョン・アダムスとは?