我想列出来自任何特定网页的所有图片,但是只想列出尺寸大于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');
}
答案 0 :(得分:2)
PHP有一个filesize()
函数,它返回bytes
中的大小,并且可以这样使用:
echo "The file size in KB is ".(filesize('image.png')/1024);
唯一的问题是它不适用于远程文件。
所以,你可以:
修改的
正如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;
}
}
答案 1 :(得分: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;