2011-04-29 160 views
0

Possible Duplicate:
Grabbing the href attribute of an A element獲得的一個元素

喂的href屬性的內容,

我有以下的HTML我想分析:

<td align="left" nowrap="nowrap"><a href="XXXXXXX"> 

我要救XXXXX一個變量。 我幾乎不知道正則表達式。我知道如何使用strpos,substr等來完成它,但我相信它比使用正則表達式要慢。

if (preg_match('!<td align="left" NOWRAP><a href=".\s+/.+">!', $result, $matches)) 
    echo $matches[1]; 
else 
    echo "error!!!"; 

我知道前面的代碼是一個正則表達式專家的暴行。但我真的不知道該怎麼做。我需要一些提示,而不是完整的解決方案。

+2

http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html – Diarmaid 2011-04-29 14:42:27

+0

經過測試dom和正則表達式後,我發現使用strpos,substr實際上更快... – Cornwell 2011-04-29 15:59:12

回答

3

這是我的(不是遠程原創)提示:不要使用正則表達式來解析HTML。 使用HTML解析器。

參見How do you parse and process HTML/XML in PHP?

+0

+1好的建議提前2秒鐘:D – alex 2011-04-29 14:40:27

+1

請舉個例子。 – Gumbo 2011-04-29 14:41:00

+0

本應該是一個評論 – Gordon 2011-04-29 14:46:08

2

知道正則表達式的一件事是知道何時不是來使用它們。

通常當你想解析 HTML,9/10次,正則表達式不是正確的工具。您可以使用DOM parser

+0

本應該是一個評論 – Gordon 2011-04-29 14:46:19

1

如果你的結構是總是喜歡你貼,你可以使用這個表達式是相同的:

<td\s+align="left"\s+nowrap="nowrap">\s*<a\s+href="(.*?")> 

,然後採取#1組即括號內的字符串。您必須創建一個,這個括號之間的區域將包含您將獲得的數據。 This link包含有關正則表達式和PHP實現的有用信息。

+0

謝謝,但我得到這個錯誤:「未知的修飾符'\'」 – Cornwell 2011-04-29 14:51:11

+0

嘗試逃離斜線,如'\\' – Alberto 2011-04-29 20:14:23