(PHP 4, PHP 5)
addcslashes — C 言語と同様にスラッシュで文字列をクォートする
$str
, string $charlist
)
charlist
パラメータに羅列された文字の前にバックスラッシュを付けた文字列を返します。
str
エスケープしたい文字列。
charlist
エスケープの対象となる文字を並べたもの。
charlist
が \n, \r 等の文字を含んでいる場合、
C言語と同様の手法によりエスケープされます。
アスキーコードが32未満または126より大きい文字は、8進表現に変換されます。
charlist 引数の文字の列びを定義する際には、 範囲の最初と最後で指定する文字集合に含まれる文字の種類を把握するようにしてください。
<?php
echo addcslashes('foo[ ]', 'A..z');
// 出力: \f\o\o\[ \]
// 全ての大文字と小文字はエスケープされます。
// ... しかし、[\]^_` もエスケープされてしまいます。
?>
<?php
echo addcslashes("zoo['.']", 'z..A');
// 出力: \zoo['\.']
?>
エスケープ文字を0, a, b, f, n, r, t , vとする場合には注意してください。 これらは、\0, \a, \b, \f, \n, \r, \t , \v に変換されます。PHPでは、 \0 (NULL), \r (復改文字), \n (改行文字), \f (フォームフィード), \v (垂直タブ), \t (タブ) が定義済みのエスケープシーケンスですが、C言語では、 これら全てが定義済みのエスケープシーケンスです。
エスケープされた文字列を返します。
バージョン | 説明 |
---|---|
5.2.5 | エスケープシーケンス \v と \f が追加されました。 |
"\0..\37" のように charlist
に範囲を指定可能です。この場合、アスキーコードが 0 から 31
の範囲の文字は全てエスケープされます。
例1 addcslashes() の例
<?php
$escaped = addcslashes($not_escaped, "\0..\37!@\177..\377");
?>