2010-04-18 104 views
0
<tr id='ieconn3' > 
    <td><table width='100%'><tr><td valign='top'><table width='100%'><tr><td>aaaaa 
<br>&nbsp;</td></tr><tr><td> 

我想要得到的aaaaa部分直到<br></td>正則表達式模式。我嘗試了很多模式,但沒有奏效。任何幫助?PHP的preg_match模式問題,

回答

0

您不應該嘗試使用正則表達式來解析HTML,因爲HTML不是常規語言,因此無法用正則表達式來描述。改爲使用適當的HTML分析器。

如果您使用的是XHTML,則可以使用SimpleXML將其解析爲XML並用SimpleXMLElement::xpath查詢。而對於HTML文檔,您可以使用Simple HTML DOM Parser。並且DOMDocument甚至可以處理XHTML和HTML。

+0

我不gonns解析HTML我剛開內容標籤 – 2010-04-18 08:44:16

+0

@kk:但您需要解析HTML代碼以獲取正確的內容。 – Gumbo 2010-04-18 09:06:52

+0

​​<表寬度= '100%'><表寬度= '100%'>​​這部分ONLY
我想要得到僅此部分,但它給了我1個孩子節點。並與任何HTML標籤我不能preg_replace? – 2010-04-18 09:33:25

0

正如Gumbo指出的那樣,如果你堅持使用正則表達式,這隻會導致巨大的混亂。但是,如果你是確保HTML沒有機會,這個人會做的伎倆:

/<tr><td>(.*)<\/td><\/tr>/

使用這樣的:在

$string = "<tr id='ieconn3' > 
<td><table width='100%'><tr><td valign='top'><table width='100%'><tr><td>aaaaa<br>&nbsp;</td></tr><tr><td>"; 

$matches = array(); 
preg_match("/<tr><td>(.*)<\\/td><\\/tr>/", $string, $matches); 

print($matches[1]);