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

Возможный дубликат:
Динамически заменять атрибуты «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://www.crunch.com/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 Простой 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://www.crunch.com/pic.jpg"/>
</body></html>');

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

 KeatsKelleher28 сент. 2010 г., 02:00
Вы пытались использовать DOMDocument ()?
 Wrikken28 сент. 2010 г., 02:11
Голосование закрыть как дубликатДинамически заменять атрибуты "src" всех тегов <img>, поскольку это не способ сделать это, но вы правы, ответы могли бы быть более важными (хотя, проверить документацию DOM не так сложно, и я считаю, что это проще (субъективно) и способ быстрее (объективнее), чем этот 'Simple HTML DOM Parser')

Ответы на вопрос(2)

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

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

Ваш ответ на вопрос