PHP関数preg_match_all正規表現の基本使用詳細解析

2840 ワード

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

例の要件:biuuu,biuu_のような各DIV要素のIDとコンテンツをそれぞれ取り出す2,biuuu_3,jb51.net,jb51.Net 2およびjb 51.Net 3(いくつかの一般的なグリップポイントはこのように一致している)
解析:文字列は基本的なHTML要素であり、各DIV要素は1つのIDと内容に対して独立しており、まずDIV内のID値と内容、例えばjb 51を取り出す方法を考慮する.Netは、他の類似要素に一致します.1つのDIVでは、2つの値、すなわち2つの一致する式を取り出す必要があります.1つ目の式はID値(biuuuu)に一致し、2つ目の式はIDの内容(jb 51.net)に一致し、正規式でよく使われる式は括弧で囲まれています.すると、前の要素は次のようになります.
(jb51.net)
(式2)
では、上記のようにカッコを使ってマッチングする必要がある領域を分割し、次に各式の内容をどのようにマッチングするかを考えてみましょう.IDはアルファベット、数字、下線かもしれないと思います.これは基本になります.カッコを使って実現できます.以下のようにします.
式1:[a-zA-Z 0-9_]+(大文字と小文字、数字と下線を表す)では、式2をどのようにマッチングするか.IDの内容は任意の文字であってもよいが、文字をマッチングできないことに注意しなければならない.この2つの文字をマッチングすると、後で使用するDIVがマッチングされるので、この2つの文字から始まる要素、すなわち文字で一致しないことを排除しなければならない.以下のようにする.
式2:[^<>]+(不一致文字を表す)では、一致する必要があるサブ式が実現されますが、1つの式を一致させる必要があります.要領は、式:/'"(式1)"'>(式2)/その中の二重引用符"と/必要に応じてエスケープ文字をエスケープし、次のように前の2つの式を入れます:'"([a-z 0-9_]+)"'>/([^<>]+)/   
これにより、各DIV要素のID値とコンテンツに一致する正規表現が実現され、preg_が用いられるmatch_all関数のテストは次のとおりです.
 
  
$html = '
jb51.net
jb51.net2
jb51.net3
';
preg_match_all('/
([^<>]+)/',$html,$result);
var_dump($result);



array(3) { [0]=> array(3)
{ [0]=> string(30) "
jb51.net
" [1]=> string(33) "
jb51.net2
" [2]=> string(33) "
jb51.net3
" } [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" } }

, , , DIV ID 。 , , , preg_match_all , 。