我正在使用的脚本'获取'一个html页面并且解析只显示其中的.jpg图像,但我需要进行一些修改,当我这样做时,它只是失败...
这有效:
include('simple_html_dom.php');
function getUrlAddress() {
$url = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
return $url .'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}
$html = file_get_html($url);
foreach($html->find('img[src$=jpg]') as $e)
echo '<img src='.$e->src .'><br>';
然而,有一些问题...我只想显示超过一定大小的图像,加上一些网站没有在img标签中显示完整的网址,因此需要尝试绕过它...所以我做了以下事情:
include('simple_html_dom.php');
function getUrlAddress() {
$url = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
return $url .'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}
$html = file_get_html($url);
foreach($html->find('img[src$=jpg]') as $e)
$image = $e->src;
// check to see if src has domain
if (preg_match("/http/", $e->src)) {
$image = $image;
} else {
$parts = explode("/",$url);
$image = $parts['0']."//".$parts[1].$parts[2].$e->src;
}
$size = getimagesize($image);
echo "<br /><br />size is {$size[0]}";
echo '<img src='.$image.'><br>';
这样可行,但只返回第一张图片。
在下面的示例链接中有5个图像,第一个代码显示但不显示它们,因为src没有前导域
Example link as mentioned above
有更好的方法吗?为什么循环失败?
答案 0 :(得分:2)
您似乎错过了{
:
foreach($html->find('img[src$=jpg]') as $e) {
答案 1 :(得分:1)
你忘记了括号:
foreach($html->find('img[src$=jpg]') as $e){
$image = $e->src;
// check to see if src has domain
if (preg_match("/http/", $e->src)) { $image = $image; }
else {
$parts = explode("/",$url);
$image = $parts['0']."//".$parts[1].$parts[2].$e->src;
}
$size = getimagesize($image);
echo "<br /><br />size is {$size[0]}";
echo '<img src='.$image.'><br>';
}