我已将图像服务器移动到其他位置。如何仅在<中替换域和路径? img>标签没有触及< a>标签
<img src="http://old-domain.com/bad/old/smiley.gif" height="42" width="42">
到
<img src="http://new-domain.com/good/new/smiley.gif" height="42" width="42">
我一直在努力解决这个问题
$pattern = '/(<img [^>]*>)/i';
$replacement = 'hello' . '\1world';
$content = preg_replace($pattern, $replacement, $content);
答案 0 :(得分:1)
你可以尝试这样的东西来找到相关的部分:
'/<img [^>]*src=\"http://old-domain.com\/bad\/old(?:[^"]*)"/i'
这是在查找包含错误域名的img
个标记。
与preg_replace_callback一起使用,其中回调函数使用正确的路径执行旧路径的简单str_replace。
或者,如果您想查找所有图片代码或域名更改,则只需:
'/<img [^>]*src=\"http:/(?:[^"]*)"/i'
并调整替换功能以查找域部分。
请注意,只有在您为该属性使用双引号时它才有效,但我确信您可以根据需要进行调整。
答案 1 :(得分:1)
$pattern = '/(<img.*?)(old-domain.com/bad/old)(.*?[^>]*>)/i';
$replacement = '\1new-domain/good/new\3';
$content = preg_replace($pattern, $replacement, $content);
(<img.*?)(old-domain.com/bad/old)(.*?[^>]*>)
</img>
)>