【发布时间】:2015-02-24 16:47:37
【问题描述】:
我想获取一个存储在变量中的代码块并替换其中任何图像标签的 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 标记)——我将整个代码块传递给函数。 (顺便说一句 - 对我来说,没有图像标签的错误返回也很好)。
请问我在这里错过了什么?
非常感谢您的任何帮助。
【问题讨论】:
-
return $doc->saveHTML();有什么问题吗? -
看看
preg_replace函数。 -
Niet the Dark Absol - 有效(非常感谢),但它在代码中添加了一个 doctype 和一个 html 标签和一个 body 标签 - 有没有办法解决这个问题?顺便说一句 - 这是我第一次使用 DOM 模块,你可能会说 lol