2010-01-04 47 views
0

我想我怎樣才能使這個與正則表達式,PHP和預浸匹配解析從解析內容使用正則表達式

<td>content</td> 
and 
<td *?*>content</td> 
and 
<td *specific td class*>content</td> 

內容?

+0

我想,也許我們已經到達了語言的特定位點等都是舞臺必要... – ennuikiller 2010-01-04 18:15:01

+1

不要用正則表達式解析html。 – 2010-01-04 18:23:17

+1

重複。 http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – 2010-01-04 18:38:05

回答

4

我覺得this總結起來就不錯了。

總之,不要使用正則表達式來解析HTML。相反,看看DOM類,特別是DOMDocument::loadHTML

3

如果你有一個HTML文檔,你真的不應該使用正則表達式來解析它:HTML僅僅是不夠「常規」的。

更好的解決方案是使用DOM解析器加載HTML文檔 - 例如,DOMDocument::loadHTMLXpath queries通常做得非常好!

+0

借調...正則表達式是困難的方式。 – prodigitalson 2010-01-04 18:17:26

0

<td>content</td><td>([^<]*)</td>

<td *specific td class*>content</td><td[^>]*class=\"specific_class\"[^>]*>([^<]*)<

0

@OP,這裏有一個方法

$str = <<<A 
<td>content</td> 
<td *?*>content</td> 
<td *specific td class*>content</td> 
<td *?*> multiline 
content </td> 
A; 

$s = explode("</td>",$str); 
foreach ($s as $a=>$b){ 
    $b=preg_replace("/.*<td.*>/","",$b); 
    print $b."\n"; 
} 

輸出

$ php test.php 
content 

content 

content 

multiline 
content