(PHP 4, PHP 5)
addcslashes — C言語と同様にスラッシュで文字列をクォートする
説明
string
addcslashes ( string str, string charlist )
charlistパラメータに羅列された文字の前にバッ
クスラッシュを付けた文字列を返します。もし
charlist
が
\n,
\r 等の文字を含んでいる場合、
C言語と同様の手法によりエスケープされます。
アスキーコードが32未満または126より大きい文字は、8進表現に変換されます。
エスケープ文字を0, a, b, f, n, r, t , vとする場合には注意してください。
これらは、\0, \a, \b, \f, \n, \r, \t , \v に変換されます。PHPでは、
\0 (NULL), \r (復改文字), \n (改行文字) , \t (タブ)が定義済みのエ
スケープシーケンスですが、C言語では、これら全てが定義済みのエスケー
プシーケンスです。
"\0..\37" のように
charlistに範囲を指定可能で
す。この場合、アスキーコードが 0 から 31 の範囲の文字は全てエスケー
プされます。
例 2249. addcslashes() の例
<?php
$escaped = addcslashes($not_escaped, "\0..\37!@\177..\377");
?>
charlist引数の文字の列びを定義する際には、範囲の最初と最後で指定す
る文字集合に含まれる文字の種類を把握するようにしてください。
<?php
echo addcslashes('foo[ ]', 'A..z');
// 全ての大文字と小文字はエスケープされます。
// ... しかし、[\]^_` とタブ、改行、復改文字等もエスケープされてしまいます。
?>
また、ある範囲を指定する最初の文字がその範囲の2番目の文字よりも大きな
ASCII値を有している場合、範囲は定義されません。最初と最後の文字と
ピリオド文字のみがエスケープされます。ある文字のASCII値を見つけるに
は、
ord() 関数を使用してください。
<?php
echo addcslashes("zoo['.']", 'z..A');
// 出力: \zoo['\.']
?>
stripcslashes(),
stripslashes(),
addslashes(),
htmlspecialchars(),
quotemeta() も参照ください。