2009-07-24 6 views
3

J'utilise le fichier "simplexml_load_file" de PHP pour obtenir des données de Flickr.Comment extraire l'URL d'une chaîne en PHP?

Mon but est d'obtenir l'url de la photo.

Je suis en mesure d'obtenir la valeur suivante (affectée à la variable PHP):

<p><a href="http://www.flickr.com/people/[email protected]/">codewrecker</a> posted a photo:</p> 

<p><a href="http://www.flickr.com/photos/[email protected]/2302759205/" title="Santa Monica Pier"><img src="http://farm3.static.flickr.com/2298/2302759205_4fb109f367_m.jpg" width="180" height="240" alt="Santa Monica Pier" /></a></p> 

Comment puis-je extraire juste cette partie?

http://farm3.static.flickr.com/2298/2302759205_4fb109f367_m.jpg 

Juste au cas où il aide, voici le code que je travaille avec:

<?php 
$xml = simplexml_load_file("http://api.flickr.com/services/feeds/[email protected]&lang=en-us&format=xml&tags=carousel"); 
foreach($xml->entry as $child) { 
    $flickr_content = $child->content; // gets html including img url 
    // how can I get the img url from "$flickr_content"??? 
} 
?> 

Répondre

6

Vous pouvez probablement avec l'aide d'une expression régulière pour cela, en supposant que la façon dont le HTML est formé est à peu près va rester le même, par exemple:

if (preg_match('/<img src="([^"]+)"/i', $string, $matches)) { 
    $imageUrl = $matches[1]; 
} 

Ceci est assez un robuste, et si le code HTML va changer (par exemple l'ordre des paramètres dans le <img> tag, risque de HTML mal formé etc.), il vaudrait mieux utiliser un analyseur HTML.

0

Manière simple: Combinaison de substr et de strpos pour extraire d'abord l'étiquette, puis la valeur src = '...', et enfin la chaîne cible.

manière un peu plus difficile (mais beaucoup plus ROBUSTE): Utilisez une bibliothèque d'analyse XML tels que simpleXML

1

Ce n'est pas résoudre votre problème (et surpuissant probablement au total), mais vaut la peine de mentionner parce que je l'ai utilisé la bibliothèque 2 projets et c'est bien écrit.

phpFlickr - http://phpflickr.com/

0

J'espère que cela est utile. J'apprécie d'utiliser xpath pour couper à travers le XML Je reviens de SimpleXML:

<?php 
$xml = new SimpleXMLElement("http://api.flickr.com/services/feeds/[email protected]&lang=en-us&format=xml&tags=carousel", NULL, True); 
$images = $xml->xpath('//img'); //use xpath on the XML to find the img tags 

foreach($images as $image){ 
    echo $image['src'] ; //here is the image URL 
} 
?> 
Questions connexes