PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

addcslashes - C 言語と同様にスラッシュで文字列をクォートする | JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

addcslashes

(PHP 4, PHP 5, PHP 7)

addcslashesC 言語と同様にスラッシュで文字列をクォートする

説明

string addcslashes ( string $str , string $charlist )

charlist パラメータに羅列された文字の前にバックスラッシュを付けた文字列を返します。

パラメータ

str

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

charlist

エスケープの対象となる文字を並べたもの。 charlist\n, \r 等の文字を含んでいる場合、 C言語と同様の手法によりエスケープされます。 アスキーコードが32未満または126より大きい文字は、8進表現に変換されます。

charlist 引数の文字の列びを定義する際には、 範囲の最初と最後で指定する文字集合に含まれる文字の種類を把握するようにしてください。

<?php
echo addcslashes('foo[ ]''A..z');
// 出力:  \f\o\o\[ \]
// 全ての大文字と小文字はエスケープされます。
// ... しかし、[\]^_` もエスケープされてしまいます。
?>
また、ある範囲を指定する最初の文字がその範囲の2番目の文字よりも大きな ASCII 値を有している場合、範囲は定義されません。 最初と最後の文字とピリオド文字のみがエスケープされます。 ある文字の ASCII 値を見つけるには、 ord() 関数を使用してください。
<?php
echo addcslashes("zoo['.']"'z..A');
// 出力:  \zoo['\.']
?>

0, a, b, f, n, r, t そして v といった文字をエスケープするときには注意しましょう。 変換結果はそれぞれ \0, \a, \b, \f, \n, \r, \t そして \v となりますが、 これらはすべて、C 言語では定義済みのエスケープシーケンスです。 その多くは C 言語に由来する他の言語でもエスケープシーケンスとして定義されており、 PHP も例外ではありません。つまり、charlist にこれらの文字を定義した状態で addcslashes() を使って他の言語のコードを生成したときに、 期待通りの結果が得られない可能性があるということです。

返り値

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

変更履歴

バージョン 説明
5.2.5 エスケープシーケンス \v と \f が追加されました。

"\0..\37" のように charlist に範囲を指定可能です。この場合、アスキーコードが 0 から 31 の範囲の文字は全てエスケープされます。

例1 addcslashes() の例

<?php
$escaped 
addcslashes($not_escaped"\0..\37!@\177..\377");
?>

参考

  • stripcslashes() - addcslashes でクォートされた文字列をアンクォートする
  • stripslashes() - クォートされた文字列のクォート部分を取り除く
  • addslashes() - 文字列をスラッシュでクォートする
  • htmlspecialchars() - 特殊文字を HTML エンティティに変換する
  • quotemeta() - メタ文字をクォートする


忘却曲線を使ってこの関数を確実に記憶に残す

フォーラムで「addcslashes - C 言語と同様にスラッシュで文字列をクォートする」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | addcslashes - C 言語と同様にスラッシュで文字列をクォートする」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: