2009-11-23 41 views
1

我有一個網絡機器人從網站提取一些數據。問題在於html內容沒有線路剎車,所以匹配某些東西有點困難,所以我需要提取td標籤之間的所有內容。這裏有一個字符串例如:PHP正則表達式否定

<a class="a" href="javascript:ow(19623507)">**-**-**-***.cstel.net</a>&nbsp; (<b><font color="#3300cc">Used</font></b>)</td><td><a class="a" href="javascript:ow(19623507)">**-**-**-***.cstel.net</a>&nbsp; (<b><font color="#3300cc">Used</font></b>)</td> 

我的正則表達式到目前爲止:

<a\s+class="a"\s+href="javascript:ow\((.*?)\)">.+</a>(?!<td>).+</td> 

但我的正則表達式的整條生產線相匹配,而不是匹配的所有內容。有任何想法嗎?

+0

的可能重複【如何分析和處理PHP程序HTML?(http://stackoverflow.com/questions/3577641/how-to-parse-and-process-html-with-php) – outis 2012-03-29 01:04:07

回答

0

你能確定正確的換行符應該在哪裏嗎?如果是這樣,首先用適當的換行符替換這些標記,然後使用你擁有的模式(假設該模式起作用 - 我沒有嘗試過)可能會更容易。

你的模式看起來非常具體,但也許它適用於你正在做的事情。

1

您是否試過將.+更改爲.+?

2

不要浪費你的時間在正則表達式上。使用DOM和XPath。

DOMDocument::loadHTML($html)->getElementsByTagName('a')