通过正则环视结构只替换html标签外的内容

本主题由 神墓 创建于 2009-11-11 21:34:21

有这样一段代码

代码如下

$string='<div>
<a href="http://www.geekaa.com">pylong</a> is very good and I love geekaa.
<img src="http://www. geekaa.com/logo.gif">
This is the logo of geekaa.com
</div>';
现在要把geekaa着色,也就是要把geekaa替换成<font style='color:red'>geekaa</a>

因为html标签如a,img等里面的内容是不能替换的,所以这就要用到PHP的正则环视结构了。

分析:正文geekaa中,左边是不存在<....,但存在<...>,同理,右边不存在...>但存在<....>

于是,解决方案如下

代码如下

<?php
$string='<div>
<a href="http://www.geekaa.com">geekaa</a> is very good and I love geekaa.
<img src="http://www.geekaa.com/logo.gif">
This is the logo of geekaa.com
</div>';
$pattern='/(?!<[^>]*)(geekaa)(?![^<]*>)/i';

$result=preg_replace($pattern,"<font style='color:red'></font>",$string);
echo $result;
?>

放心注册,GeeKaa不会虚耗你半点时间,你只会发现更多乐趣。 立即注册