2012-02-11 4 views
-1

可能性の重複まで:
How to parse and process HTML with PHP?は、すべての文字マッチング特定の単語(この場合はhtmlタグ)正規表現

私は正規表現と非常に良くないんだけど、私が見つかりました。このコード:

<?php 
$string = "some text (a(b(c)d)e) more text"; 
if(preg_match("/\((?>[^()]+|(?R))*\)/",$string,$matches)) 
{ 
    echo "<pre>"; print_r($matches); echo "</pre>"; 
} 
?> 

そして、オープンとクローズのhtmlタグinsteに一致するように正規表現パターンを変更しようとしています括弧の広告ですが、"[^()]+"のように括弧の代わりにタグにマッチするようにする方法はわかりません。

この目的は、タグがそれ自身の中で何回入れ子になっていても、内容にアクセスできる新しいHTMLタグを作ることができるようにすることです。
ありがとうございます。

答えて

0

[^()]は、character classを定義する。 ^は、「すべての文字を除くすべて」を意味します。したがって、あなたの例は、として、角括弧以外のすべてを解釈することができます

htmlタグのコンテンツを解析する場合は、[^<>]+が必要です。

あなたはコンテンツのような<div>Blah <a>foo</a>bar</div>を持っているし、あなたが数量詞の後~<div>(.+?)</div>~

?のような正規表現を使用する必要がありますBlah <a>foo</a>bar一致させたい場合はgreedy killerと呼ばれ、それは必ず正規表現は、それが</div

をencouters際に「食べて停止します」作ってあげます

とにかく... HTMLを解析するときは、DOMxPath:: を使用してください。ここではGoogleからrandom tutorialがあります。

Blah foobar

+0

例が正確

Blah
foo
バー
が、DOMについての情報への感謝を解析することができれば – Max

+0

@Max DOMは、より優れたパフォーマンスと、すべてを持っています...私は例を追加することがあり、その中に、より良い病気を見て、私のニーズに合うだろうあなたがしたい場合はそれを解析する... – Vyktor

関連する問題