谁能告诉我为什么这不起作用?
我试图通过使用php dom从页面获得一定的href,并且href - www.imdb.com/title/tt-some-id
包含单词imdb
,因此在下面的示例中,我试图通过使用php函数strpos
来查找单词imdb
来获得href,但它没有看到工作。
$page = 'www.someurl.com';
$data = array();
$dom = new DOMDocument();
@$dom->loadHTML($page);
$data['imdb_link'];
$links = $dom->getElementsByTagName('a');
foreach ($links as $link) {
$href = $link->getAttribute('href');
if (false !== strpos($href,'imdb')) {
$data['imdb_link'] = $href;
} else {
$data['imdb_link'] = '';
}
}
和页面
的链接<a href="some-url.com"></a>
<a href="www.imdb.com/title/some-id"></a>
<a href="another-url.com"></a>
<a href="another-url.com"></a>
谁能告诉我为什么它不工作谢谢
您也可以将逻辑移动到Xpath。结果将是一个没有找到匹配元素的空字符串:
$page='<a href="some-url.com"></a>
<a href="www.imdb.com/title/some-id"></a>
<a href="another-url.com"></a>
<a href="another-url.com"></a>';
$dom = new DOMDocument();
@$dom->loadHTML($page);
$xpath = new DOMXpath($dom);
$data['imdb_link'] = $xpath->evaluate(
'string(//a[contains(@href, "imdb")]/@href)'
);
var_dump($data);
输出:https://eval.in/149602
array(1) {
["imdb_link"]=>
string(26) "www.imdb.com/title/some-id"
}
这实际上是工作的,但是你正在覆盖它…
你可以看到你最终的<a>
href不包含文本imdb,所以它将被你之前发现的else
语句覆盖。
怎么解决呢?
只要从你的代码中删除else
部分。