Я хочу перечислить все изображения с любой конкретной веб-страницы, но хочу перечислить только те изображения, размер которых больше, чем 10kb. Я использую этот код для отображения изображений, в которых перечислены все изображения этой конкретной страницы, но я не хочу перечислять изображения, размер которых менее 10 кб
$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'); }
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
Я сделал еще несколько исследований и обнаружил, что stat
не поддерживается протоколом HTTP (S) . Поэтому вы должны сохранить файл на свой сервер, чтобы он работал.
Редактировать 4
Решение с использованием get_headers()
вместо filesize()
.
foreach ($tags as $tag) { $data = get_headers($tag->getAttribute('src')); if(($data["Content-Length"]/1024)>=10){ echo $src; } }
Попробуй это:-
$img = get_headers("http://img.ruphp.com/php/2564.jpg", 1); $imgbit = $img["Content-Length"]/1024; echo "The file size in KB is ".$imgbit;