2010-09-27 5 views
1

Duplicate possible:
Dynamically replace the “src” attributes of all <img> tagsremplacer Dynamiquement les attributs « src » de tous les <img> balises (Redux)

histoire drôle: j'ai posté this very question il y a peu de temps, mais au lieu d'obtenir Quelque chose que je pourrais, vous savez, utiliser, tout ce que j'ai eu, c'était beaucoup de dogmes sur les maux de l'utilisation de regex pour analyser HTML. Alors, ça recommence.

J'ai du HTML et je veux remplacer les attributs "src" de toutes les balises img afin qu'elles pointent vers des copies d'images identiques (bien qu'avec des noms de fichiers différents) sur un autre hôte.

Par exemple, étant donné ces trois balises

<IMG SRC="../graphics/pumpkin.gif" ALT="pumpkin"> 
<IMG BORDER="5" SRC="redball.gif" ALT="*"> 
<img alt="cool image" src="http://www.crunch.com/pic.jpg"/> 

Je les aime remplacés par

<IMG SRC="http://myhost.com/cache/img001.gif" ALT="pumpkin"> 
<IMG BORDER="5" SRC="http://myhost.com/cache/img002.gif" ALT="*"> 
<img alt="cool image" src="http://myhost.com/cache/img003.jpg"/> 

Je suis en train d'utiliser PHP Simple HTML DOM Parser, mais je ne suis pas l'obtenir.

include 'simple_html_dom.php'; 
$html = str_get_html('<html><body> 
<IMG SRC="../graphics/pumpkin.gif" ALT="pumpkin"> 
<IMG BORDER="5" SRC="redball.gif" ALT="*"> 
<img alt="cool image" src="http://www.crunch.com/pic.jpg"/> 
</body></html>'); 

Que dois-je faire ensuite?

+0

Avez-vous essayé d'utiliser DOMDocument()? – KeatsKelleher

+1

Voter pour fermer comme doublon de [Remplacer dynamiquement les attributs "src" de tous les tags ] (http://stackoverflow.com/questions/3808285/dynamically-replace-the-src-attributes-of-all-img-tags), car ce n'est pas la façon de le faire, mais vous avez raison de dire que les réponses auraient pu être plus précises (bien que consulter la documentation du DOM ne soit pas si difficile, et je le trouve plus facile (subjectif) bien plus rapide (objectif) que 'Simple HTML DOM Parser') – Wrikken

Répondre

1

Le lien que vous avez mis en ligne a la réponse:

// Create DOM from string 
$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>'); 

$html->find('div', 1)->class = 'bar'; 

$html->find('div[id=hello]', 0)->innertext = 'foo'; 

echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div> 

Bien sûr, vous devrez modifier les noms balise/attribut/valeur pour répondre à vos besoins spécifiques.

6

Si vous vous souciez de suivre la voie de DOMDocument():

$dom=new DOMDocument(); 
$dom->loadHTML($your_html); 
$imgs = $dom->getElementsByTagName("img"); 
foreach($imgs as $img){ 
    $alt = $img->getAttribute('alt'); 
    if ($alt == 'pumpkin'){ 
     $src = 'http://myhost.com/cache/img001.gif';  
    } else if ($alt== '*'){ 
     $src = 'http://myhost.com/cache/img002.gif'; 
    } else if ($alt== 'cool image'){ 
     $src = 'http://myhost.com/cache/img003.jpg'; 
    } 
    $img->setAttribute('src' , $src); 
} 
Questions connexes