正则表达式替换排除特定情况

1.只替换第一次出现的字符串“红豆”;

$s="i'am carl 小红豆杉苗 <a href='abc'>dfsaf<a href=\"fdsafdsaf\">大红豆杉</a></a> carl fds<b>af红豆dsa</b>few";
$r = preg_replace('/红豆/i', '绿豆',$s,1);
var_dump($r);

结果

string(104) 
"i'am carl 小绿豆杉苗 <a href="abc">dfsaf<a href="fdsafdsaf">大红豆杉</a></a> carl fds<b>af红豆dsa</b>few"

  

2.替换所有外部不带a标签的字符串”红豆“;

$s='i\'am carl 小红豆杉苗 <a href="abc">dfsaf<a href="fdsafdsaf">大红豆杉</a></a> carl fds<b>af红豆dsa</b>few';

$r = preg_replace('/(?!<a .*?>.*?)红豆(?![^<]*<\/a>)/i', '绿豆',$s);

//$r = preg_replace('/红豆/i', '绿豆',$s,1);
var_dump($r);

结果

string(104) 
"i'am carl 小绿豆杉苗 <a href="abc">dfsaf<a href="fdsafdsaf">大红豆杉</a></a> carl fds<b>af绿豆dsa</b>few"

  

PS: 如有漏洞,望不吝指教。  

  

posted on 2016-06-24 11:12  jenqz  阅读(1312)  评论(0编辑  收藏  举报