用php替换img src

时间:2015-02-24 16:47:37

标签: php dom replace tags

我想取一个存储在变量中的代码块,并替换其中任何图像标记的src,而不会干扰代码块的其余部分。

例如:代码块可能显示为:

<a href="http://mylink.com"><img src="image1.jpg"></a>

我想将其更改为(使用PHP):

<a href="http://mylink.com"><img src="altimage.jpg"></a>

我目前正在使用我发现使用PHP DOM模块更改图像标记的解决方案,但该函数只返回已更改的img标记HTML,而不包含其余的HTML。

我打电话的功能如下:

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->saveXML($tag);
}

return false;
}

当然,这只是返回已更改的img标记,但剥离其他HTML(例如A标记) - 我将整个代码块传递给该函数。 (顺便说一下 - 对我来说,对于没有图像标签的错误回报也很好。)

我在这里想念的是什么?

非常感谢您的任何帮助。

1 个答案:

答案 0 :(得分:2)

您需要使用return $doc->saveXML();代替return $doc->saveXML($tag);。请参阅saveXML的documentation

  

saveXML([DOMNode $ node [,int $ options]])

     

节点:使用此参数仅输出特定节点,不包含XML声明而不是整个文档