関数の概要
PHPの addslashes 関数は、文字列内の特定の文字(シングルクォート、ダブルクォート、バックスラッシュ、NULL文字)に自動的にバックスラッシュ()を付加してエスケープ処理を行います。これにより、文字列をSQLクエリやデータベース、HTML、JavaScriptのコードなどに安全に組み込む際のトラブルを防ぐことができます。
パラメータの説明
string $str: エスケープを行いたい対象の文字列を指定します。
戻り値
引数として渡した文字列 $str に対して、シングルクォート(’)、ダブルクォート(”)、バックスラッシュ()、NULL文字()にバックスラッシュを付加した新しい文字列を返します。元の文字列は変更されません。
使用例
基本的な使い方
<?php
$text = "He said, 'Hello World!'";
$escapedText = addslashes($text);
echo $escapedText;
// 出力: He said, 'Hello World!'
?>
文字列内のシングルクォートがエスケープされ、SQLなどで文字列を安全に扱える形に変換されています。
SQLiteやMySQLでの利用
<?php
$name = "O'Reilly";
$query = "SELECT * FROM users WHERE name = '" . addslashes($name) . "'";
echo $query;
// 出力: SELECT * FROM users WHERE name = 'O'Reilly'
?>
SQLクエリ内で文字列に含まれるシングルクォートをエスケープし、SQLインジェクションのリスクを軽減します。ただし、実務ではプリペアドステートメントを使うことが推奨されます。
複数の特殊文字を含む場合
<?php
$input = "Path: C:\xampp\htdocs\index.php";
$escaped = addslashes($input);
echo $escaped;
// 出力: Path: C:\xampp\htdocs\index.php
?>
バックスラッシュ自体もエスケープされるため、複雑なパスや特殊文字が含まれている文字列でも安全に処理できます。
関連する関数
stripslashes–addslashesで追加されたバックスラッシュを取り除くhtmlspecialchars– HTMLにおける特殊文字をエスケープmysqli_real_escape_string– MySQL用により安全なエスケープを行うPDO::quote– PDOで利用する安全なクエリ作成用のエスケープメソッド
まとめ
addslashes は文字列内の特定の文字をエスケープし、安全に文字列を扱うために便利な関数です。ただし、SQLのエスケープには addslashes よりも専用のデータベース関数(mysqli_real_escape_string や PDOのプリペアドステートメント)を使うことが推奨されます。基本的な文字列操作や簡単なエスケープ処理には便利なので、用途に応じて正しく使い分けましょう。
