C 言語と同様にスラッシュで文字列をクォートする
$string
$characters
characters パラメータに羅列された文字の前にバックスラッシュを付けた文字列を返します。
characters
string
エスケープしたい文字列。
エスケープの対象となる文字を並べたもの。 characters が \n, \r 等の文字を含んでいる場合、 C言語と同様の手法によりエスケープされます。 アスキーコードが32未満または126より大きい文字は、8進表現に変換されます。
\n
\r
characters 引数の文字の列びを定義する際には、 範囲の最初と最後で指定する文字集合に含まれる文字の種類を把握するようにしてください。
<?phpecho addcslashes('foo[ ]', 'A..z');// 出力: \f\o\o\[ \]// 全ての大文字と小文字はエスケープされます。// ... しかし、[\]^_` もエスケープされてしまいます。?>
<?phpecho addcslashes("zoo['.']", 'z..A');// 出力: \zoo['\.']?>
0, a, b, f, n, r, t そして v といった文字をエスケープするときには注意しましょう。 変換結果はそれぞれ \0, \a, \b, \f, \n, \r, \t そして \v となりますが、 これらはすべて、C 言語では定義済みのエスケープシーケンスです。 その多くは C 言語に由来する他の言語でもエスケープシーケンスとして定義されており、 PHP も例外ではありません。つまり、characters にこれらの文字を定義した状態で addcslashes を使って他の言語のコードを生成したときに、 期待通りの結果が得られない可能性があるということです。
エスケープされた文字列を返します。
"\0..\37" のように characters に範囲を指定可能です。この場合、アスキーコードが 0 から 31 の範囲の文字は全てエスケープされます。
例1 addcslashes の例
<?php$escaped = addcslashes($not_escaped, "\0..\37!@\177..\377");?>