Часто бывает полезно изменить атрибут src = HTML IMG-тега без потери каких-либо других атрибутов. Что такое быстрый, не-регулярный способ сделать это?
Причины, по которым я не хочу использовать RegEx, следующие:
Вот контекст: у меня есть куча сообщений RSS-фида, каждая из которых содержит одно изображение. Я хотел бы заменить эти изображения пустыми изображениями, но не оставлять HTML в противном случае:
$raw_post_html = "<h2>Feed Example</h2> <p class='feedBody'> <img src='http://img.ruphp.com/php/48da8425bc54af2d5d022f28cc8b021c.200.0.0.png' alt='Feed Post Image' width='350' height='200' /> Feed Body Content </p>"; echo replace_img_src($raw_post_html, "http://img.ruphp.com/php/blank.gif");
Это то, что я придумал. Он использует PHP DOM API для создания крошечного документа HTML, а затем сохраняет XML только для элемента IMG.
function replace_img_src($original_img_tag, $new_src_url) { $doc = new DOMDocument(); $doc->loadHTML($original_img_tag); $tags = $doc->getElementsByTagName('img'); if(count($tags) > 0) { $tag = $tags->item(0); $tag->setAttribute('src', $new_src_url); return $doc->saveHTML($tag); } return false; }
Примечание . В версиях PHP до 5.3.6 $doc->saveHTML($tag)
можно изменить на $doc->saveXML($tag)
.