0

我正在使用“获取”一个 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 标签中显示完整的 URL,所以也需要尝试解决这个问题......所以我已经完成了下列的:

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 没有前导域

如上所述的示例链接

有一个更好的方法吗?为什么循环会失败?

4

2 回答 2

2

您似乎缺少一个{

foreach($html->find('img[src$=jpg]') as $e) {
于 2012-01-23T15:31:09.980 回答
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>';
}
于 2012-01-23T15:31:20.370 回答