2011-12-31 70 views
0

我有這個html: <h2><a href="http://.... > title</h2> 我怎樣才能得到字符串「href」?php DOM內部標籤(simple_html_dom)

include('simple_html_dom.php'); 
$html = file_get_html('http://...'); 

foreach($html->find('h2')->find('a') as $k) { 
echo $k->href . '<br>'; 
} 

錯誤:

我試圖調用一個成員函數查找()一個非對象

+0

只是嘗試刪除第一個「H2」找到creteria並適用於所有「一'是$ html-> find('a')..我認爲它會工作.. – 2011-12-31 18:38:04

回答

0

我還沒有使用PHP簡單的HTML DOM解析器......但我認爲這個錯誤可能是因爲它返回給你一個字符串,並且你正在期待一個html對象被傳遞的那個返回字符串上應用find函數。 ..

以前的解決方案,它只是搜索的字符串,而發現功能搜索標籤錯誤的BCZ ..

一種可能的方式是我所評論.. 除去第一「H2」找到creteria和應用對於所有「a」即

foreach($html->find('a') as $k) { 
echo $k->href . '<br>'; 
}  

其他可能的解決方案是使用PHP的file_get_contents inbuild和SEACH定期 表情......我已經做了你...

$html = file_get_contents('new.php'); 
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; 
$uql=array(); 
preg_match($reg_exUrl, $html, $url); 

print_r($url); 
2

而是使用兩個->find()的電話,嘗試

foreach($html->find('h2 > a') as $k) { 

我沒有使用簡單的DOM我自己,所以我不知道選擇器是否工作。如果不是,請嘗試

foreach($html->find('a') as $k) { 

並對結果進行排序。

+0

謝謝,不幸的是錯誤(調用一個非對象的成員函數find())仍然存在 – LuZa 2011-12-31 18:24:16

+0

@LucaZap哦等等,你使用的是簡單的HTML DOM,而不是官方的[DOM](http://php.net/manual/en/book.dom.php)。沒關係。 – mc10 2011-12-31 18:25:37