2010-08-18 8 views
0
$variable = '<img src="http://www.gravatar.com/avatar/66ce1f26a725b2e063d128457c20eda1?s=32&d=identicon&r=PG" height="32" width="32" alt=""/>'; 

Comment faire pour obtenir src de cette image?PHP obtenir l'image src

Comme:

$src = 'http://www.gravatar.com/avatar/66ce1f26a725b2e063d128457c20eda1?s=32&d=identicon&r=PG';

Merci.

+0

y at-il d'autre dans 'variable' de $, par exemple un autre HTML ou tout simplement la chaîne – Gordon

+0

Pouvez-vous régler votre problème – pltvs

Répondre

4

Vous pouvez utiliser un analyseur html pour cela. Voir celui-ci: http://simplehtmldom.sourceforge.net/ (J'espère que cela fonctionne pour les nœuds, pas seulement pour des pages entières).

+2

alternatives de tiers proposées qui utilisent effectivement au lieu DOM? de String Analyse syntaxique: [phpQuery] (http://code.google.com/p/phpquery/), [Zend_Dom] (http://framework.zend.com/manual/en/zend.dom.html), [QueryPath] (http://querypath.org/) et [FluentDom] (http://www.fluentdom.org). Cependant, pour le UseCase de l'OP, un HTML/DOM Parser peut être exagéré. – Gordon

6

utilisation regex

preg_match('@src="([^"]+)"@' , $variable , $match); 

Et src sera en $ match, voir print_r ($ match). Mais cela ne concerne que cette situation, si vous voulez une solution universelle (comme «contre», etc.)

+0

En fait l'un des rares cas où je pense qu'un Regex est justifié et mieux adapté qu'un analyseur HTML complet pour obtenir le résultat souhaité. – Gordon

+0

cette regex ne fonctionne pas, donne un tableau vide – James

+0

@WorkingHard fonctionne très bien pour moi – Gordon

1

utiliser html/analyseur DOM. Utilisation HTML DOM. Télécharger et inclure le fichier simple_html_dom.php dans votre script.

ensuite obtenir des URL d'image comme ceci:

$html = str_get_html('<img src="http://www.gravatar.com/avatar/66ce1f26a725b2e063d128457c20eda1?s=32&d=identicon&r=PG" height="32" width="32" alt=""/>'); 

// Find all images 
foreach($html->find('img') as $element) 
     echo $element->src . '<br>';