2010-06-01 5 views
0

J'essaye d'obtenir le src de toutes les images dans une page. Mais certaines pages utilisent des chemins absolus et d'autres non. Donc, je me demande quelle est la meilleure façon de le faire?obtenir tout le chemin absolu de l'image dans une page?

En ce moment j'utilise ceci.

$imgsrc_regex = '#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)\1#im'; 

preg_match_all($imgsrc_regex, $html, $matches); 

Par exemple une page Web peut avoir les images que src = « xyz.png » tandis que d'autres pourraient utiliser src = « b.com/xyz.png » est donc là un moyen d'ajouter automatiquement l'URL lorsque nécessaire?

+1

Pas assez d'expressions rationnelles. – alex

+1

Pas assez de parseurs. – Kobi

Répondre

3

La meilleure façon (imo) serait d'utiliser DOMDocument et DOMXPath pour obtenir les URL:

$dom=new domDocument; 
$dom->loadHTML($html); 

et

$xpath = new DOMXPath($dom); 
$result = $xpath->query("//img/@src"); 

Using regex to parse HTML is bad.

Ou vous devez préciser votre question que tu veux vraiment. Voulez-vous seulement obtenir les URL d'image qui sont absolues? Si oui, vous pouvez vérifier si elles commencent par http::

$result = $xpath->query("//img[starts-with(@src, 'http:') or starts-with(@src, 'HTTP:')]/@src"); 
Questions connexes