PHP関数preg_match_all正規表現の基本的な使い方


PHP関数preg_match_all正規表現の基本例.
 
正規表現を知る前に、よく使われる正規表現の基礎知識を身につける必要があります. 
preg_match_all関数の具体的な説明PHPマニュアルを見ることができます.本文はpregを運用します.match_allは正規表現の効果をテストするために使用されます.
インスタンスコード:
$html = '<div id="biuuu">jbxue.com</div><div id="biuuu_2">jbxue.com2</div><div id="biuuu_3">jbxue.com3</div>';

例の要件:biuuu,biuu_のような各DIV要素のIDとコンテンツをそれぞれ取り出す2,biuuu_3,jbxue.com,jbxue.com 2とjbxue.com 3(よく使われるグリップポイントはこのように一致しています)
解析:文字列は基本的なHTML要素であり、各DIV要素は1つのIDと内容に対して独立しており、まずDIV内のID値と内容、例えばjbxueをどのように取り出すかを考慮する.comは、他の類似要素と一致します.1つのDIVでは、2つの値、すなわち2つの一致する式を取り出す必要があります.1つ目の式はID値(biuuuu)に一致し、2つ目の式はIDの内容(jbxue.com)に一致し、正規式でよく使われる式は括弧で囲まれています.すると、前の要素は次のようになります.
<div id="(biuuu)">(jbxue.com)</div> 
<div id="(   1)">(   2)</div>
では、上記のようにカッコを使ってマッチングする必要がある領域を分割し、次に各式の内容をどのようにマッチングするかを推測します.IDはアルファベット、数字、下線である可能性があると推測します.これは基本になります.カッコを使うと、以下のように実現できます.
式1:[a-zA-Z 0-9_]+(大文字と小文字、数字、下線の一致を示します)
では、式2をどのようにマッチングするかは、IDの内容が任意の文字であってもよいため、<または>文字をマッチングできないことに注意してください.この2つの文字をマッチングすると、後で使用するDIVがマッチングされるので、この2つの文字の開始要素、すなわち<または>文字で一致しないことを排除する必要があります.以下のようにします.
式2:[^<>]+(不一致<および>文字を表す)
これにより、マッチングが必要なサブエクスプレッションが実現されますが、1つのエクスプレッションをマッチングする必要があります.要領は次のとおりです.
式:/''(式1)'>(式2)/
二重引用符に注意してください.
次のようになります.
'\"([a-z0-9_]+)\"'>/<div id=\"([a-z0-9_]+)\">([^<>]+)<\/div>/
これにより、各DIV要素のID値とコンテンツに一致する正規表現が実現され、preg_が用いられるmatch_all関数のテストは次のとおりです.
$html = '<div id="biuuu">jbxue.com</div><div id="biuuu_2">jbxue.com2</div><div id="biuuu_3">jbxue.com3</div>'; 
preg_match_all('/<div\sid=\"([a-z0-9_]+)\">([^<>]+)<\/div>/',$html,$result); 
var_dump($result);
結果:
array(3) { [0]=> array(3) 
{ [0]=> string(30) "<div id="biuuu">jbxue.com</div>" [1]=> string(33) "<div id="biuuu_2">jbxue.com2</div>" [2]=> string(33) "<div id="biuuu_3">jbxue.com3</div>" } [1]=> array(3) { [0]=> string(5) "biuuu" [1]=> string(7) "biuuu_2" [2]=> string(7) "biuuu_3" } [2]=> array(3) { [0]=> string(8) "jbxue.com" [1]=> string(9) "jbxue.com2" [2]=> string(9) "jbxue.com3" } }
には3つの式があり、それぞれの式が一致する値を表示し、配列として格納され、DIV要素のIDとコンテンツが取り出されます.正規表現を使用するには、何が必要かを知っておく必要があります.そして、それと一致し、考えがはっきりしていて、preg_を適切に利用します.match_all関数は出力デバッグを実行し、非常に便利です.