2010-02-28 7 views
2

J'essaie d'extraire tous les tags img d'une chaîne HTML. Voir le codePHP preg_match_all ne retourne rien

$d1  = file_get_contents("http://itcapsule.blogspot.com/feeds/posts/default?alt=rss"); 
preg_match_all('/<img[^>]+>/i',$d1,$result); 
print_r($result); 

Et le résultat est

Array ([0] => Array ()) 

Mais la même regex donne un résultat correct dans un outil de test en ligne regex http://regex.larsolavtorvik.com/.

Quel pourrait être le problème?

Répondre

1

Le contenu que vous analysez est codé avec des entités html - essentiellement < est remplacé par &lt;. Utilisez d'abord html_entity_decode pour convertir les données en html normal. PS: utilisez un analyseur HTML au lieu de regex.

+0

Merci !! va essayer ça – Orion

0

résolu le problème en utilisant SimplePie XML Parser

include_once 'simplepie.inc'; 

$feed = "feedurl"; 

$data  = new SimplePie($feed); 
$data->init(); 
$data->handle_content_type(); 

foreach ($data->get_items() as $item) 
{ 
    $desc=$item->get_description(); 
    preg_match_all('/<img[^>]+>/i',$desc,$result); 
    print_r($result); 
} 

C'est exactement ce que je cherchais :) Merci les gars !!