1

我想列出来自任何特定网页的所有图像,但只想列出那些尺寸大于 10kb 的图像。我正在使用此代码列出列出该特定页面的所有图像的图像,但我不想列出大小的图像小于 10 kb

$url="http://example.com";

$html = file_get_contents($url);

$doc = new DOMDocument();
@$doc->loadHTML($html);

$tags = $doc->getElementsByTagName('img');

foreach ($tags as $tag) {
   echo $tag->getAttribute('src');
}
4

2 回答 2

2

PHP有一个filesize()返回大小的函数,bytes可以这样使用:

echo "The file size in KB is ".(filesize('image.png')/1024);

唯一的问题是它不适用于远程文件。

所以,你可以:

  1. 将每个图像保存到临时目录
  2. 遍历它们并检查文件大小
  3. 如果大小<10,删除它
  4. 列出剩余的图像

编辑

正如 Blowski 所指出的,从 PHP 5.0 开始,它将与一些 URL 包装器一起使用,所以你应该没问题。

编辑 2

一些示例代码:

foreach ($tags as $tag) {
   if (file_exists($tag->getAttribute('src')) && filesize($tag->getAttribute('src')) >= 10240)
     echo $src;
   }
}

编辑 3

我做了更多研究,发现HTTP(S)协议stat不支持。因此,您必须将文件保存到您自己的服务器上才能正常工作。

编辑 4

使用get_headers()方法而不是filesize().

foreach ($tags as $tag) {
   $data = get_headers($tag->getAttribute('src'));
   if(($data["Content-Length"]/1024)>=10){
     echo $src;
   }
}
于 2012-08-08T14:09:19.213 回答
2

试试这个:-

$img = get_headers("http://static.adzerk.net/Advertisers/2564.jpg", 1);
$imgbit = $img["Content-Length"]/1024;

echo "The file size in KB is ".$imgbit;
于 2012-08-08T14:16:15.623 回答