正则表达式替换排除特定情况
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: 如有漏洞,望不吝指教。