【发布时间】:2013-12-18 11:08:22
【问题描述】:
我正在尝试对多个链接使用 DOM 解析器,然后比较 2 对值。有人可以帮我解决我哪里出错了吗?我不能对@class="badge-item-img" 进行比较吗?
编辑我应该提到第一个 foreach 有效,但是在尝试找到第二个时没有显示结果。
<?php
// Init the '$url_array' array.
$url_array = array();
$url_array[] = 'http://www.reddit.com/r/funny';
$url_array[] = 'http://www.9gag.com/';
// Init the return '$ret' array.
$ret = array();
// Roll through the '$url_array' array.
foreach ($url_array as $url_value) {
$html = file_get_contents($url_value);
$dom = new DOMDocument();
$dom2 = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$xpath2 = new DOMXPath($dom2);
$hyperlinks = $xpath->evaluate('//a[@class="thumbnail "]');
$hyperlinks2 = $xpath2->evaluate('//a[@class="badge-item-img"]');
foreach($hyperlinks as $hyperlink) {
if(strpos($hyperlink->getAttribute('href'), 'http://i.imgur.com/') !== FALSE){
$ret[] = "<img style='padding-left:30%' width=\"500\" src=\"" . $hyperlink->getAttribute('href') . "\" alt=\"\" />"
. "<br>"
. "<br>"
. "<br>"
;
}
foreach($hyperlinks2 as $hyperlinker) {
$ret[] = "<img style='padding-left:30%' width=\"500\" src=\"" . $hyperlinker->getAttribute('href') . "\" alt=\"\" />"
. "<br>"
. "<br>"
. "<br>"
;
}
}
}
// Roll through the '$ret' array.
foreach($ret as $ret_value) {
echo $ret_value;
【问题讨论】:
-
如果你不是在寻找设置黑客服务器,我建议尝试使用前端 js 来获得你想要的结果,例如:GreaseMonkey。服务器端html解析html不是很可靠,还有如果目标站点使用js动态填充内容,你的php无论如何也跑不了js。
-
我喜欢你的名字!我不想经营任何非法网站。我知道我使用的网站不使用 JS 来填充内容。
-
什么意思 - 比较@class="badge-item-img";您是否尝试查找重复的图像?
-
@怎么了?请阅读this answer 以获得更好的方法。 -
我不知道是谁否决了这个问题,但我不知道为什么。在发布之前我做了很多研究,我相信这是一个 stackoverflow 可以帮助我解决的问题......我是对的。我不在乎你是否不喜欢这个问题......搜索这个网站,这里没有任何东西可以回答我的问题。