2012-04-10 3 views
1

Erstens bin ich frischer für PHP. Ich benutze folgenden PHP Ausdruck um alle Bilder von gegebener URL zu erhalten.preg_match_all-Funktion zum Abrufen von Bildern (mit bestimmten Extension & Breite-Höhe) von URL

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

aber dieser Ausdruck holt alle Bilder mit GIF-Bilder auch & 1KB auch große Bilder.

Ich möchte die Bilder mit einer minimalen Breite 100px & Erweiterung holen ist zu .png/.jpg

mich Bitte geben Sie eine Lösung, wenn jemand.

Dank

+0

Gibt es einen Hinweis in der HTML über die Größe des Bildes? – deceze

+0

Eine bestimmte URL oder Webseite? –

+0

Nein, es gibt keinen Hinweis auf die Größe. $ Homepage = @file_get_contents ($ _ POST ['url']); – user1309589

Antwort

2

ungetestet array_map und getimagesize mit:

// 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); 
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]; 

Ich denke, das sollte funktionieren =) zumindest hier mit jedem img-Tag arbeitet i für den Test verwendet, die eine Nummer haben als Wert in Breite-Attribut.

/Edit: diese besser zu lesen ist:

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

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

$yourImagesArray = $matches[0]; 
Verwandte Themen