1

特定の Web ページのすべての画像を一覧表示したいが、サイズが 10kb より大きい画像のみを一覧表示したい。このコードを使用して、その特定のページのすべての画像を一覧表示する画像を一覧表示していますが、そのサイズの画像を一覧表示したくありません。 10kb未満

$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

これを試して:-

$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 に答える
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 に答える