фильтровать изображения с веб-страницы по размеру

Я хочу перечислить все изображения с любой конкретной веб-страницы, но хочу перечислить только те изображения, размер которых больше, чем 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); 

Единственная проблема заключается в том, что он не работает с удаленными файлами.

Итак, вы могли:

  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

Я сделал еще несколько исследований и обнаружил, что 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;