関数・クラス解説

addcslashes

version:PHP 4, PHP 5, PHP 7 (公式)

文字列をバックスラッシュでクォート(エスケープ)する

フォーマット

string : addcslashes ( string $str , string $charlist )

パラメータ

string $str
エスケープしたい文字列

string $charlist
エスケープ対象の文字列。"a..z" という形式で指定し、この場合はa~z の範囲が指定される。逆順で指定するとWarningとなる。

返り値
string
バックスラッシュ付加後の文字列

解説

指定された文字列(string $str)のなかで、指定された文字範囲(string $charlist)の文字の前にバックスラッシュ(\)を付加する。

記述サンプル

//PHP 7.4.6で実行
$testStr = "ABCDEFGHIabcdefg[\]^_`";

//A~Z(アルファベット大文字)をクォート
echo addcslashes($testStr, 'A..Z');		//\A\B\C\D\E\F\G\H\Iabcdefg[\]^_`

//A(大文字)~z(小文字)までクォート。ただしこの指定は、該当範囲に[\]^_`も含まれてしまうためすべてクォートされてしまう(下記文字コード順を参照)
echo addcslashes($testStr, 'A..z');		//\A\B\C\D\E\F\G\H\I\a\b\c\d\e\f\g\[\\\]\^\_\`

//範囲指定が逆順のためエラー(下記文字コード順を参照)
echo addcslashes($testStr, 'z..A');	//\ABCDEFGHIabcdefg[\]^_`
Warning: addcslashes(): Invalid '..'-range, '..'-range needs to be incrementing

参考:文字コード順
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

参考リンク

addslashes 特定の文字の前にバックスラッシュを付けてエスケープされた文字列を返す
htmlspecialchars 特殊な文字をHTMLエンティティに変換する
quotemeta 入力文字列の中のメタ文字をクォートする
stripcslashes addcslashes() でクォートされた文字列をアンクォートする
stripslashes バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

タグ

エスケープ String 文字列


公式リファレンス

書式

addcslashes ( string $str , string $charlist ) : string

説明

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

パラメータ

str
エスケープしたい文字列。
charlist
エスケープの対象となる文字を並べたもの。 charlist が \n, \r 等の文字を含んでいる場合、 C言語と同様の手法によりエスケープされます。 アスキーコードが32未満または126より大きい文字は、8進表現に変換されます。 charlist 引数の文字の列びを定義する際には、 範囲の最初と最後で指定する文字集合に含まれる文字の種類を把握するようにしてください。
echo addcslashes('foo[ ]', 'A..z'); // 出力:  \f\o\o\[ \] // 全ての大文字と小文字はエスケープされます。 // ... しかし、[\]^_` もエスケープされてしまいます。
また、ある範囲を指定する最初の文字がその範囲の2番目の文字よりも大きな ASCII 値を有している場合、範囲は定義されません。 最初と最後の文字とピリオド文字のみがエスケープされます。 ある文字の ASCII 値を見つけるには、 ord() 関数を使用してください。
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() を使って他の言語のコードを生成したときに、 期待通りの結果が得られない可能性があるということです。

返値

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

サンプル

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

例1 addcslashes() の例

$escaped = addcslashes($not_escaped, "\0..\37!@\177..\377");

参考

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


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール