0

我有这个 html: <h2><a href="http://.... > title</h2> 如何获取字符串“href”?

我试过:

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

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

错误:在非对象上调用成员函数 find()

4

2 回答 2

2

而不是使用两个->find()电话,请尝试

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

我自己没有使用过 Simple DOM,所以我不确定选择器是否有效。如果没有,请尝试

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

并对结果进行排序。

于 2011-12-31T18:18:06.577 回答
0

我没有使用 PHP Simple HTML DOM Parser...但我认为错误可能是因为它返回一个字符串,并且您正在对返回的字符串应用 find 函数,该字符串期望传递一个 html 对象...

以前的解决方案是错误的,因为它只是搜索了一个字符串,而 find 函数搜索了一个标签。

一种可能的方法是我评论过的.. 删除第一个“h2”查找条件并申请所有“a”

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

其他可能的解决方案是使用 php inbuild file_get_contents 并通过正则表达式搜索...我已经为您完成了...

$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);
于 2011-12-31T19:04:42.753 回答