2010-12-20 6 views
0

2文字の中にある2つの文字を一致させた文字について、ここで少し前に尋ねましたが、<code>タグの中に他のHTMLが巻き込まれるまでうまくいっています。正規表現の一致HTMLを包み込んだHTML

preg_match_all("!<code>([^<]*)</code>!", $string, $return_array); 

誰がこの正規のexpを改善でした:

これは私がこれまでにそれをやっている方法です。私の問題を解決するには? :)

ありがとうございました!

+3

HTMLを解析するためにregexを使用しないでください。期間。適切なHTMLパーサを使用してください。 – cdhowie

+1

私はまずパーサーを使用すると言います。あなたは人々がそこに置くことができるすべてについて説明しません。 htmlを許可した場合、正規表現はありません。 – naugtur

+0

@cdhowieあなたはそれに私を打ち負かす... – naugtur

答えて

4

これは恐ろしい正規表現に同意する必要がある場合です。簡単な抽出のために、正規表現がしばしば適しています。しかし、誤った形式のHTMLやネストされたHTMLを処理したい場合、それは大きな騒ぎのないオプションではありません。

このような場合は、phpQueryまたはQueryPathを使用することをおすすめします。

print qp($html)->find("code")->text(); 
0

これを試しましたか?

preg_match_all("!<code>(.*?)</code>!", $string, $return_array); 
+0

Luceroの答えに私のコメントを参照してください.. – cdhowie

関連する問題