2014-09-25 70 views
0

我想要的同一類別的所有一個標籤來獲取所有與HTML文件同一類的一個標籤, 我曾嘗試:預浸匹配來自的file_get_contents

$html = file_get_contents('http://10tv.nana10.co.il/Category/?CategoryID=400008'); 
preg_match_all('/<a\s+class="FooterNavigationItemValue">(.*)<\/a>/', $html, $div_array); 
return var_dump($div_array); 

,但我得到一個空數組,幫助?

+3

簡單:不要在HTML上使用正則表達式。使用DOM + XPATH。 '// a [@ class ='FooterNavigationItemValue']'會更加可靠。 – 2014-09-25 16:58:34

+0

什麼是輸入和預期輸出? – vks 2014-09-25 17:03:09

+0

@vks我想獲得一個所有標籤的數組 – user3519234 2014-09-25 17:13:05

回答

3

正如馬克B評論說,使用DOM將是您最好的選擇。但是因爲你正在尋找正則表達式:

'#<a.*?class="FooterNavigationItemValue".*?>(.*?)</a>#s' 

P.S.我查看了代碼中提到的網站,這段正則表達式完美地完成了它的工作。

現在的解釋: 兩個.*?之前和之後class="FooterNavigationItemValue"是確保該字符串也可以匹配,如果之前和之後class="FooterNavigationItemValue"裏面的東西。

而我使用(.*?)而不是(.*)來防止正則表達式的貪婪。更多信息可以在這裏找到:What do lazy and greedy mean in the context of regular expressions?

+0

+1做正則表達式所要求的,至少提到DOM。有一點解釋會很好,因爲它似乎沒有OP理解懶惰匹配。 – Sam 2014-09-25 17:41:42

+0

ahh ...我將添加一個解釋然後:D – sikhlana 2014-09-25 17:46:04

+0

@sikhlana你的正則表達式不會給我所有的標籤作爲數組,它給了我一個奇怪的數組,包括div – user3519234 2014-09-25 17:52:02