PHP 関数 preg_match_all の具体的な使用法は、PHP 関数 preg_match_all インスタンスの要件: biuuu、biuuu_2、biuuu_3、php self-study network、php self-study などの各 DIV 要素の ID とコンテンツを取り出します。 network 2 と php 独習 Net 3 (一般的に使用される Web サイトの取得方法の一部はこのように一致します)
分析: 文字列は単純な HTML 要素であり、各 DIV 要素は ID とコンテンツに対応しており、独立していることを最初に考えます。 DIV の内容を削除する方法 ID 値と内容 (例: php self-study network)、その他の同様の要素と一致します。 DIV から 2 つの値、つまり 2 つの一致する式を取り出す必要があります。最初の式は ID 値 (biuuu) と一致するために使用され、2 番目の式は ID (php self) の内容と一致するために使用されます。 -study network) 式で一般的に使用される正規表現は括弧を使用します。その場合、前の要素は次の形式になります:
<ol class="dp-xml"> <li class="alt"><span><span class="tag">< </span><span class="tag-name">div</span><span> </span></span></li><li class="alt"><span><span class="attribute">id</span><span>=</span><span class="attribute-value">"(biuuu)"</span><span class="tag">></span></span></li> <li class="alt"><span><span>(php自学网)</span></span></li> <li class="alt"><span><span class="tag">< /</span><span class="tag-name">div</span><span class="tag">></span><span> </span></span></li> <li class="alt"><span><span class="tag">< </span><span class="tag-name">div</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"(表达式1)"</span><span class="tag">></span></span></li> <li class="alt"><span><span>(表达式2)</span></span></li> <li class="alt"><span><span class="tag">< /</span><span class="tag-name">div</span><span class="tag">></span><span> </span></span></li> </ol>
さて、上記の括弧を使用して、一致する必要がある領域を分割します。 次のステップは、一致する方法です。各式の内容は、ID が文字、数字、またはアンダースコアであると推測されます。これは次のように角かっこを使用して簡単に実現できます。
式 1: [a-zA-Z0-9_] + (一致するサイズを示します) 文字、数字、アンダースコアを記述します。
次に、式 2 を一致させる方法です。ID の内容は任意の文字にすることができますが、< または > 文字は一致しないことに注意してください。これら 2 つの文字が一致すると、次の文字が一致します。使用されるすべての DIV が一致するため、これらの 2 つの文字で始まる要素は除外する必要があります。つまり、次のように < または > 文字で始まる要素は一致しません。式 2: [^<>]+ (一致する < および > 文字がないことを示します)
このようにして、PHP 関数 preg_match_all が一致する必要がある部分式が実装されますが、式と一致する必要もあります。メソッドは次のとおりです:
式: / '" (式 1) "'>(式 2)
二重引用符 " と / はエスケープ文字を使用してエスケープする必要があることに注意してください。
<ol class="dp-xml"> <li class="alt"> <span><span>'"([a-z0-9_]+)"'</span><span class="tag">></span></span><span><span>/</span></span> </li> <li class="alt"><span><span class="tag">< </span><span class="tag-name">div</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"([a-z0-9_]+)"</span><span class="tag">></span></span></li> <li class="alt"><span><span>([^</span><span class="tag"><</span><span class="tag">></span><span>]+)</span></span></li> <li class="alt"><span><span class="tag">< /</span><span class="tag-name">div</span><span class="tag">></span><span>/ </span></span></li> </ol>
この方法 ID 値と各 DIV 要素の内容に一致する正規表現を実装し、preg_match_all 関数を使用して次のようにテストします:
<ol class="dp-xml"> <li class="alt"><span><span>$</span><span class="attribute">html</span><span> = </span></span></li> <li class="alt"><span><span class="attribute-value">'< div id="biuuu"></span></span></li> <li class="alt"><span><span class="attribute-value">php自学网</span></span></li> <li class="alt"><span><span class="attribute-value">< /div></span></span></li> <li class="alt"><span><span class="attribute-value">< div id="biuuu_2"></span></span></li> <li class="alt"><span><span class="attribute-value">php自学网2</span></span></li> <li class="alt"><span><span class="attribute-value">< /div></span></span></li> <li class="alt"><span><span class="attribute-value">< div id="biuuu_3"></span></span></li> <li class="alt"><span><span class="attribute-value">php自学网3</span></span></li> <li class="alt"><span><span class="attribute-value">< /div>'</span><span>; </span></span></li> <li><span>preg_match_all('/</span></li> <li><span class="tag">< </span><span class="attribute">divsid</span><span class="tag-name">divsid</span><span>=</span><span class="attribute-value">"([a-z0-9_]+)"</span><span class="tag">></span></li> <li> <span>([^</span><span class="tag"><</span><span class="tag">></span><span>]+)</span> </li> <li> <span class="tag">< /</span><span class="tag-name">div</span><span class="tag">></span><span>/'</span><span>,$html,$result); </span> </li> <li class="alt"><span>var_dump($result); </span></li> </ol>
PHP関数 preg_match_all の結果の例:
<ol class="dp-xml"> <li class="alt"><span><span>array(3) { </span></span></li> <li> <span>[0]=</span><span class="tag">></span><span> array(3) </span> </li> <li class="alt"><span>{ </span></li> <li> <span>[0]=</span><span class="tag">></span><span> string(30) "<br></span><span class="tag"><</span><span class="tag-name">div</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"biuuu"</span><span class="tag">></span><span>php自学网</span><span class="tag"></</span><span class="tag-name">div</span><span class="tag">></span><span>" </span> </li> <li class="alt"> <span>[1]=</span><span class="tag">></span><span> string(33) "<br></span><span class="tag"><</span><span class="tag-name">div</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"biuuu_2"</span><span class="tag">></span><span>php自学网2</span><span class="tag"></</span><span class="tag-name">div</span><span class="tag">></span><span>" </span> </li> <li> <span>[2]=</span><span class="tag">></span><span> string(33) "<br></span><span class="tag"><</span><span class="tag-name">div</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"biuuu_3"</span><span class="tag">></span><span>php自学网3</span><span class="tag"></</span><span class="tag-name">div</span><span class="tag">></span><span>" </span> </li> <li class="alt"><span>} </span></li> <li> <span>[1]=</span><span class="tag">></span><span> array(3) </span> </li> <li class="alt"><span>{ </span></li> <li> <span>[0]=</span><span class="tag">></span><span> string(5) "biuuu" </span> </li> <li class="alt"> <span>[1]=</span><span class="tag">></span><span> string(7) "biuuu_2" </span> </li> <li> <span>[2]=</span><span class="tag">></span><span> string(7) "biuuu_3" </span> </li> <li class="alt"><span>} </span></li> <li> <span>[2]=</span><span class="tag">></span><span> array(3) </span> </li> <li class="alt"><span>{ </span></li> <li> <span>[0]=</span><span class="tag">></span><span> string(8) "php自学网" </span> </li> <li class="alt"> <span>[1]=</span><span class="tag">></span><span> string(9) "php自学网2" </span> </li> <li> <span>[2]=</span><span class="tag">></span><span> string(9) "php自学网3" </span> </li> <li class="alt"><span>} </span></li> <li><span>} </span></li> </ol>
3 つの式があり、それぞれが個別に表示されます。式によって一致した値は配列の形式で保存されるため、各 DIV 要素の ID と内容を確認できます。正規表現を使用する上で最も重要なことは、何が必要かを知り、それをニーズに合わせて、出力デバッグに非常に便利な PHP 関数 preg_match_all を適切に使用することです。
www.bkjia.com