1

まず、私は PHP の初心者です。指定された URL からすべての画像を取得するために、次の PHP 式を使用しています。

@preg_match_all("<img.+?src=[\"'](.+?)[\"'].+?>", $homepage, $matches, PREG_SET_ORDER);

ただし、この式はすべての画像を gif 画像と 1KB サイズの画像も取得します。

最小幅 100px の画像を取得したい & 拡張子は .png/.jpg にする必要があります

誰かが持っている場合は、解決策を教えてください。

ありがとう

4

2 に答える 2

2

array_mapgetimagesizeを使用して未テスト:

// the domain is needed to get the width of the image
define('DOMAIN', 'http://test.com');

function checkSize($imagename) {
    $info = getimagesize(DOMAIN . $imagename[1]);
    if ($info[0] >= 100000) {
        return $imagename;
    }
}

$homepage = '<img src="test1.png"><img src="test2.gif"><img src="test3.jpg">';
// get all img-tags ending with "jpg" or "png"
preg_match_all("<img.+?src=[\"']([^\"]*\.(jpg|png))[\"'].+?>", $homepage, $matches, PREG_SET_ORDER);
// filter only images with width greater or equal 100k
$images = array_map('checkSize', $matches);
于 2012-04-10T06:55:06.470 に答える
1
preg_match_all('~<img(.*?)((src=("|\')(.*?)(jpg|png)("|\'))(.*?)(width=("|\')[0-9]{3,}("|\'))|(width=("|\')[0-9]{3,}("|\'))(.*?)(src=("|\')(.*?)(jpg|png)("|\')))(.*?)>~i',trim($string),$matches);

$yourImagesArray = $matches[0];

これはうまくいくはずだと思います=)少なくとも、幅属性の値として数値を持つテストに使用したすべてのimgタグでここで動作します。

/編集:これは読む方が良いです:

$src = '(src=("|\')(.*?)(jpg|png)("|\'))';
$width = '(width=("|\')[0-9]{3,}("|\'))';

preg_match_all('~<img(.*?)('.$src.'(.*?)'.$width.'|'.$width.'(.*?)'.$src.')(.*?)>~i',trim($string),$matches);

$yourImagesArray = $matches[0];
于 2012-04-10T07:14:33.967 に答える