ホームページ  >  記事  >  バックエンド開発  >  PHPで通常の特殊文字をエスケープする方法

PHPで通常の特殊文字をエスケープする方法

藏色散人
藏色散人オリジナル
2020-10-20 09:18:134586ブラウズ

php による通常の特殊文字のエスケープ方法: 最初に PHP サンプル ファイルを作成し、次に文字列を定義し、最後にバックスラッシュで特殊文字をエスケープし、変数を解析します。

PHPで通常の特殊文字をエスケープする方法

推奨: 「PHP ビデオ チュートリアル

質問

最近使用した PHP 正規表現 、式の文字列を記述するときにいくつかの問題が発生しました。バックスラッシュ "\" をいつ使用する必要があるのか​​わかりません。次に、並べ替えを行います。

PHP 文字列

PHP 文字列を定義するには 4 つの方法があります:

  • 一重引用符
  • 二重引用符
  • ここドキュメント構文構造
  • nowdoc 構文構造 (PHP 5.3.0 以降)

文字列を定義する場合、特殊文字はエスケープされ、変数は解析されます。

特殊文字には次のものが含まれます:

##項目コンテンツ備考# #改行\nLF または 0x0A\r#水平タブ\tHT または 0x09垂直タブ \vVT または 0x0Bページ変更\fFF または 0x0Cバックスラッシュ\\#一重引用符 \' 8 進文字 \[0-7]{1,3}16 進文字 #\x[0-9A-Fa-f]{1,2}

この部分の詳細については、PHP マニュアルを参照してください。簡単に説明します:

一重引用符内では、一重引用符 (') とバックスラッシュ (\) をエスケープし、他の文字の本来の意味を出力します。

##二重引用符では、二重引用符 (\") を除く特殊文字がエスケープされ、変数が解析されます。

したがって、これら 2 つの一般的な文字列定義では、バックスラッシュは常にバー (\) である必要があります。

PHP 正規表現

PHP では 2 セットの正規表現関数ライブラリが提供されています: [参考]

1 セットは PCRE (Perl 互換正規表現) ライブラリによって提供されます。プレフィックス "preg_" の付いた名前の関数を使用します。

POSIX (Unix のポータブル オペレーティング システム インターフェイス) 拡張機能によって提供される関数のセット (PHP のデフォルト)。 "ereg_" プレフィックスの名前が付いた関数を使用します。

正規表現は、一致、置換、分割の機能を提供します。

現在、perl スタイルの正規関数のみが使用されます。以下は、このタイプの文字列の説明のみです。

Perl スタイルの正規表現は、次のように区切り文字 ("/" または "#") に含める必要があります。 [参考]

$str = 'http://www.youku.com/show_page/id_ABCDEFG.html';
$regex = '/^http:\/\/([\w.]+)\/([\w]+)\/([\w]+)\.html$/i';
$regex = '#^http://([\w.]+)/([\w]+)/([\w]+)\.html$#i';

URL を分割するには、$regex 変数で以下を定義します。正規表現文字列:

^http://([\w.] )/([\w] )/([\w ] ).html$

この文字列には次のものが含まれます「/」や「.」などの特殊文字は、次のように Perl スタイルでバックスラッシュ (「\」) を使用してエスケープして定義する必要があります。 :

^http:\/\/([\ w.] )\/([\w] )\/([\w] )\.html$

同時にこの文字列を区切り文字に含める必要があるため、上記 2 種類の式の場合、区切り文字として「#」を使用する場合、「/」をエスケープする必要はありません。次の単一文字に一致する場合は、バックスラッシュ ("\") を使用してエスケープする必要があります:

"\", "? ","*","^","$"," ","( ",")","|","{","["

Perl スタイルの正規表現では、次の 1 文字、または上記で一致しない 1 文字に一致する場合、次のことも必要です。バックスラッシュ ("\") でエスケープする:

##^=}]/:a8093152e673feb7aba1828c43532094.'"

概要

正しい Perl スタイルを記述するには正規表現文字列。次の 3 つの手順が必要です。

正しい正規表現を作成し、特殊文字の変換に注意してください。 定義

それを区切り文字に入れて、Perl スタイルのエスケープ規則を使用してエスケープします。

PHP の文字列定義に従って上記の文字列の内容をエスケープします

##Carriage Enter
CR または 0x0D
##ドル記号 \$
二重引用符 #\"

以上がPHPで通常の特殊文字をエスケープする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。