我有以下代码
$body = preg_replace('/<img(.*?)src="(.+)"/Ui','<img src="renderImage.php?image=\\2&width=<?=$img_width?>&url=<?=$mobiURL?>"',$body);
$ body包含一个包含img标签的整个html页面,上面的代码完美无缺,但是我需要在其中排除使用字符串maps.google的图像,以免它被替换。
有没有办法做到这一点
答案 0 :(得分:1)
方法#1: 而不是改变你的正则表达式,使其更复杂。 您可以使用preg_replace_callback。
在回调功能中,您可以忽略maps.google.com图片。
http://php.net/manual/en/function.preg-replace-callback.php
方法#2:
首先使用maps.google.com src使IMG tages无效。
例如。将<IMG SRC='http://maps.google.com....
代码转换为
<TEMPORARY_TAG src='http://maps.google.com...
使用正则表达式。
运行原始正则表达式,将所有IMG标记替换为所需的代码段,这些代码段不会替换为maps.google.com src的代码,因为我们已在步骤#1中将IMG标记更改为TEMPORARY_TAG
执行步骤#1的反转,使用简单的字符串替换或正则表达式替换HTML中的TEMPORARY_TAG。