ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現の使用に関するヒント_PHP チュートリアル

PHP 正規表現の使用に関するヒント_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:53:04805ブラウズ

PHP 正規表現の定義:

文字の配置とパターンの一致を記述するために使用される文法規則。これは主に、文字列のパターン分割、マッチング、検索、置換操作に使用されます。

PHP の正規関数:

PHP には 2 セットの正規関数があります。これらの 2 つの正規関数には、次のような類似した機能があります。

1 つのセットは、PCRE (Perl 互換正規表現) ライブラリによって提供されます。接頭辞「preg_」が付いた名前の関数。

POSIX (Portable Operating System Interface of Unix) 拡張機能によって提供される関数のセット。接頭辞「ereg_」が付いた名前の関数を使用してください (POSIX 正規関数ライブラリは PHP 5.3 以降使用が推奨されなくなり、PHP 6 から削除されます)

POSIX 正規関数は歴史的な段階で開始されようとしているため、 PCRE これは perl の形式に似ており、perl と php を切り替えるのに便利であるため、ここでは PCRE の規則性の使用に焦点を当てます。

PCRE正規表現

PCREとはPerl Compatible Regular Expressionの略で、Perl互換の正規表現という意味です。

PCRE では、パターン式 (つまり、正規表現) は通常、「/apple/」のように 2 つのバックスラッシュ「/」で囲まれます。

正規表現の重要な概念は、メタキャラクター、エスケープ、パターン単位 (繰り返し)、反意語、参照、およびアサーションです。これらの概念は、記事 [1] で簡単に理解して習得できます。

一般的に使用されるメタ文字:

メタ文字 説明

/A 文字列の先頭のアトムと一致します

/Z 文字列の末尾のアトムと一致します

/b 単語の境界と一致します//bis / 先頭が /is/b/ である文字列に一致します。 //bis/b/ が末尾である文字列に一致します。 区切り文字付き

/B 単語の境界を除く任意の文字に一致します。 //Bis/ 単語 "This" に一致します。

/d の「is」は数字に一致し、[0-9]

/D は数字以外の任意の文字に一致し、[^0-9]

/w は英語の文字、数字、またはアンダースコアに一致します。 ; [0-9a-zA-Z_]

/W に相当します。 英語の文字、数字、アンダースコアを除く任意の文字に一致します。 [^0-9a-zA-Z_]

/ に相当します。 [/f/t/v]

/S 空白文字を除く任意の文字と一致します。 [^/f/t/v]

/f と同等です。 ページ フィードと同等です。 /x0c または /cL

と同等です。 改行と一致します。 /x0a または /cJ

に相当する文字。 キャリッジ リターン文字に相当します。 /x0d または /cM

/t に相当します。 タブ文字などに相当します。 /x09/ または /cl

/v に相当します。 垂直タブに相当します。文字; /x0b または /ck

/oNN と同等 8 進数の数字と一致する

/xNN 16 進数の数字と一致する

/cC 制御文字と一致する

パターン修飾子:

パターン修飾子は、特に大文字と小文字を無視して一致する場合に使用されます。この修飾子をマスターすると、遭遇する多くの問題を解決できることがよくあります。

i - 大文字と小文字の両方に一致します

M - 文字列を複数行として扱います

S - 文字列を単一行として扱い、改行を通常の文字として扱い、「.」は任意の文字と一致します

X - パターン内の空白は無視されます

U - 最も近い文字列と一致します

e - 置換された文字列を式として使用します

形式: /apple/i は、「apple」または「Apple」などを無視して一致します場合。 /i

PCRE パターン単位:

//1 最初の属性を抽出します

/^/d{2} ([/W])/d{2}//1/d{4}$ 以下のような文字列に一致します「2006 年 12 月 31 日」、「1996 年 9 月 27 日」、「86 01 4321」など。しかし、上記の正規表現は「12/34-5678」の形式と一致しません。これは、パターン「[/W]」の結果「/」がすでに格納されているためです。次の位置「/1」が引用符で囲まれている場合、その一致パターンも文字「/」になります。

マッチング結果を保存する必要がない場合は、非保存パターン単位「(?:)」を使用してください

例: /(?:a|b|c)(D|E|F)//1g/ 「aEEg」と一致します。一部の正規表現では、非ストレージ モード単位を使用する必要があります。それ以外の場合は、後続の参照の順序を変更する必要があります。上記の例は、/(a|b|c)(C|E|F)/2g/ と書くこともできます。

PCRE 正規表現関数:

以下は引用された内容です:

preg_match() と preg_match_all()
preg_quote()
preg_split()
preg_grep()
preg_replace()


関数の使用, PHP マニュアルから見つけることができます。 ここでは、私たちが蓄積したいくつかの正規表現を示します:

action 属性と一致します

以下は引用された内容です:

$str = '';
$match = '';
preg_match_all('//s+action=/"(?!http:)(.*?)/"/s/', $str, $match) ;
print_r($match);


正規表現でコールバック関数を使用します

以下は引用内容です:

function callback_replace() {

$url = ' http://esfang.house.sina.com.cn';
$str = '';
$str = preg_replace ( '/(?<=/saction=/")(?!http:)(.* ?)( ?=/"/s)/e', 'search(/$url, //1)', $str );

echo $str;
}
function search($url, $match){
$url を返します。$match; 段落テキスト

'; 1>)/', $str, $match ) ;
echo "属性なしで HTML タグの内容を照合します:";



HTML ソースコード内のアドレスを置き換えます

は引用された内容です:


$form_html = preg_replace ( '/ (?<=/saction=/"|/ssrc=/"|/shref=/")(?!http:|javascript)(.*?) (?=/"/s)/e', 'add_url (/$url, /'//1/')', $form_html );

最後に、通常のツールは強力ですが、効率の点では緊急のタスクやそれほど要求のないタスクの場合は、単純で大まかなアプローチの方が良い場合があります。


http://www.bkjia.com/PHPjc/371448.html

www.bkjia.com

本当


http://www.bkjia.com/PHPjc/371448.html

技術記事

PHP 正規表現の定義: 文字の配置と一致パターンを記述するために使用される文法規則。これは主に、文字列のパターン分割、マッチング、検索、置換操作に使用されます。 PHP でポジティブ...


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