替换HTML图像标记中的图像源,并排除某些图像

时间:2011-09-01 11:08:27

标签: php

我有以下代码

$body = preg_replace('/<img(.*?)src="(.+)"/Ui','<img src="renderImage.php?image=\\2&width=<?=$img_width?>&url=<?=$mobiURL?>"',$body);

$ body包含一个包含img标签的整个html页面,上面的代码完美无缺,但是我需要在其中排除使用字符串maps.google的图像,以免它被替换。

有没有办法做到这一点

1 个答案:

答案 0 :(得分:1)

方法#1: 而不是改变你的正则表达式,使其更复杂。 您可以使用preg_replace_callback。

在回调功能中,您可以忽略maps.google.com图片。

http://php.net/manual/en/function.preg-replace-callback.php

方法#2:

  1. 首先使用maps.google.com src使IMG tages无效。 例如。将<IMG SRC='http://maps.google.com....代码转换为

    <TEMPORARY_TAG src='http://maps.google.com... 使用正则表达式。

  2. 运行原始正则表达式,将所有IMG标记替换为所需的代码段,这些代码段不会替换为maps.google.com src的代码,因为我们已在步骤#1中将IMG标记更改为TEMPORARY_TAG

  3. 执行步骤#1的反转,使用简单的字符串替换或正则表达式替换HTML中的TEMPORARY_TAG。