addslashes

(PHP 4, PHP 5, PHP 7)

addslashes文字列をスラッシュでクォートする

説明

addslashes ( string $str ) : string

エスケープすべき文字の前にバックスラッシュを付けて返します。 エスケープすべき文字とは、シングルクォート('), ダブルクォート("),バックスラッシュ (\) ,NUL (NULL バイト) です。

addslashes() 関数 を使う例として、PHPが評価する文字列データを入力する場合が挙げられます。たとえば、O'Reilly というデータを $str に格納して評価する場合、$str をエスケープする(つまり eval("echo '".addslashes($str)."';"); する) 必要があります。

セキュリティ上の理由で、データベースパラメータをエスケープするには DBMS 固有のエスケープ関数 (たとえば MySQL 用の mysqli_real_escape_string() や、 PostgreSQL 用の pg_escape_literal()pg_escape_string()) を使うべきです。 識別子(例: テーブル名やフィールド名)をエスケープするときは、データベースパラメータとは別の仕様をDBMSは使います。 PostgreSQL の pg_escape_identifier() のように、DBMS によっては識別子用のエスケープ関数を提供しているものもありますが、全ての DBMS が提供しているわけではありません。 提供されていない場合は、お使いのデータベースシステムのマニュアルを参照し、適切なエスケープ方法を調べるようにしてください。

お使いの DBMS がエスケープ関数を提供しておらず、 DBMS が 特別な文字をエスケープするのに \ を使っている場合、 その DBMS に適切なエスケープ方法である場合に限って、 addslashes() 関数を使うことができます。 ほとんどのデータベース上では、 addslashes()関数を パラメータのエスケープに使うと、セキュリティ問題が起きる原因となりうることに注意してください。

PHP 5.4 より前のバージョンでは、 magic_quotes_gpc が デフォルトで on だったため、 原則として addslashes() 関数がすべての GET, POST, COOKIE のデータに対して実行されていました。 magic_quotes_gpc によって既にエスケープされた文字列に対して addslashes()関数 を絶対に実行してはいけません。2重エスケープになるからです。 get_magic_quotes_gpc()関数 で既にエスケープが行われているかを簡単にチェックできます。

パラメータ

str

エスケープしたい文字列。

返り値

エスケープされた文字列を返します。

例1 addslashes() の例

<?php
$str 
"Is your name O'Reilly?";

// 出力: Is your name O\'Reilly?
echo addslashes($str);
?>

参考