addslashes

関数の概要

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
?>

バックスラッシュ自体もエスケープされるため、複雑なパスや特殊文字が含まれている文字列でも安全に処理できます。

関連する関数

  • stripslashesaddslashes で追加されたバックスラッシュを取り除く
  • htmlspecialchars – HTMLにおける特殊文字をエスケープ
  • mysqli_real_escape_string – MySQL用により安全なエスケープを行う
  • PDO::quote – PDOで利用する安全なクエリ作成用のエスケープメソッド

まとめ

addslashes は文字列内の特定の文字をエスケープし、安全に文字列を扱うために便利な関数です。ただし、SQLのエスケープには addslashes よりも専用のデータベース関数(mysqli_real_escape_string や PDOのプリペアドステートメント)を使うことが推奨されます。基本的な文字列操作や簡単なエスケープ処理には便利なので、用途に応じて正しく使い分けましょう。