ホームページ  >  記事  >  バックエンド開発  >  PHP正規表現のpreg_match_all関数の詳しい説明

PHP正規表現のpreg_match_all関数の詳しい説明

黄舟
黄舟オリジナル
2017-11-11 11:25:3812296ブラウズ

PHP 正規表現の関数 以前に preg_match 関数を作成しましたので、皆さんもある程度はご存じだと思いますが、PHP 正規表現での preg_match_all 関数の具体的な用途は何でしょうか。今回はPHP正規表現のpreg_match_all関数について詳しく解説していきます!

正規表現を理解する前に、一般的に使用される正規表現についての基本的な知識を習得する必要があります。覚えていない場合は、必要なときに調べることができます。使用するのは 特殊文字 だけなので、正規表現は特別です。詳細については、詳細な手順を参照してください。

preg_match_all 関数の詳細な手順については、PHP マニュアルを確認してください。この記事では、preg_match_all を使用して正規表現の効果をテストします。

コード例:

$html = &#39;<p id="biuuu">jb51.net</p><p id="biuuu_2">jb51.net2</p><p id="biuuu_3">jb51.net3</p>&#39;;

要件の例: biuuu、biuuu_2、biuuu_3、jb51.net、jb51.net2、jb51.net3 などの各 p 要素の ID とコンテンツを取り出します (一般的に使用される Web サイト取得方法の一部)

分析:

文字列は基本的なHTML要素であり、最初にID値とコンテンツ内のpを削除する方法を考えます。 jb51.net などのコンテンツを検索し、他の同様の要素と一致させます。 p から 2 つの値、つまり 2 つの一致する式を取り出す必要があります。最初の式は ID 値 (biuuu) と一致するために使用され、2 番目の式は ID (jb51.net) の内容と一致するために使用されます。 ). 式で一般的に使用される正規表現は括弧を使用するため、前の要素は次の形式になります:

<p id="(biuuu)">(jb51.net)</p> 
<p id="(表达式1)">(表达式2)</p>

さて、上記の括弧を使用して、一致する必要がある領域を分割します。次のステップは、それぞれの中で一致させる方法です。式の内容、ID は文字、数字、またはアンダースコアであると推測され、これが基本となり、次のように角かっこを使用して実現できます:

式 1:

[a-zA-Z0-9_]+ (表示匹配大小写字母,数字和下划线)

次に、式 2 を照合する方法ID の内容には任意の文字を使用できますが、< または > の文字と一致しないように注意してください。これらの 2 つの文字を一致させると、後で使用されるすべての p が一致するため、; で始まる要素を除外する必要があります。つまり、次のように、70ff1cb36f39223d986b5721b01e56ee で始まる文字とは一致しません。

式 2:

[^<>]+ (表示不匹配<和>字符)

このようにして、一致する必要がある部分式が実現されます。一致する必要がある式も必要です。 メソッド: / '"(式 1)"'>(式 2)94b3e26ee717c64999d7867364b1b4a3/
二重引用符 " と / に注意してください。これはエスケープ文字でエスケープする必要があり、最初の 2 つを置き換えます。それに式を入れます。

は次のとおりです:

 &#39;\"([a-z0-9_]+)\"&#39;>/<p id=\"([a-z0-9_]+)\">([^<>]+)<\/p>/

このようにして、各 p 要素の ID 値と内容に一致する正規表現は次のようになります。

$html = &#39;<p id="biuuu">jb51.net</p><p id="biuuu_2">jb51.net2</p><p id="biuuu_3">jb51.net3</p>&#39;; 
preg_match_all('/([^<>]+)<\/p>/',$html,$result); 
var_dump($result);

結果:

array(3) { 
[0]=> array(3) 
{ [0]=> string(30) "<p id="biuuu">jb51.net</p>" 
  [1]=> string(33) "<p id="biuuu_2">jb51.net2</p>" 
  [2]=> string(33) "<p id="biuuu_3">jb51.net3</p>" 
  } 
[1]=> array(3) { 
  [0]=> string(5) "biuuu" 
  [1]=> string(7) "biuuu_2" 
  [2]=> string(7) "biuuu_3" 
  } 
[2]=> array(3) { 
  [0]=> string(8) "jb51.net" 
  [1]=> string(9) "jb51.net2" 
  [2]=> string(9) "jb51.net3" 
  } 
  }

3 つの式があり、それぞれの式に一致する値を表示し、配列の形式で格納します。各 p 要素の ID と内容を取得することができます。正規表現を使用する場合に最も重要なことは、何が必要かを理解し、要件に従って実行することです。preg_match_all 関数を使用すると非常に便利です。出力のデバッグ

概要:

この記事と前の記事を読んだ後、両方の関数には独自の理解と理解があると思います。あなたの仕事です

関連する推奨事項:

PHP正規表現のpreg_match関数の詳細な説明


PHP正規表現検証メールアドレスのケース


PHP正規表現の分析例


PHP正規表現の詳しい紹介

以上がPHP正規表現のpreg_match_all関数の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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