Динамически заменить атрибуты «src» всех тегов <img> (сокращение)

Возможный дубликат:
Динамически заменить атрибуты «src» всех тегов <img>

Смешная история. Я опубликовал этот вопрос совсем недавно, но вместо того, чтобы получить что-то, что мог, вы знаете, использовать, все, что у меня было, было много догм о том, как использовать регулярное выражение для анализа HTML. Итак, здесь идет снова.

У меня есть HTML и вы хотите заменить атрибуты «src» всех тегов img, чтобы они указывали на копии идентичных изображений (хотя и с разными именами файлов) на другом хосте.

Например, учитывая эти три тега

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

Я бы хотел, чтобы они были заменены на

 <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"/> 

Я пытаюсь использовать PHP Simple HTML DOM Parser , но я не получаю его.

 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://img.ruphp.com/php/pic.jpg"/> </body></html>'); 

Что мне делать дальше?

Если вы хотите пойти по пути 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 ); } 

У вас есть ответ:

 // 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> 

Конечно, вам нужно будет изменить имена тегов / атрибутов / значений в соответствии с вашими конкретными потребностями.