1. Replace only the first occurrence of the string "Red bean";
$s = "I am Carl Small Yew seedling <a href= ' abc ' >dfsaf<a href=\" fdsafdsaf\ "> Big yew </a></a> Carl Fds<b> AF Red Bean dsa</b>few "; $r = preg_replace ('/red bean/I ', ' mung bean ', $s, 1); Var_dump ($R);
Results
"I ' am Carl small mung bean sprout <a href=" abc ">dfsaf<a href=" Fdsafdsaf "> Big yew </a></a> carl Fds<b>af Red Bean DSA </b>few "
2. Replace all external strings without a tag "red bean";
$s = ' i\ ' Carl Small Yew seedling <a href= "abc" >dfsaf<a href= "Fdsafdsaf" > Big yew </a></a> Carl Fds<b> AF red Bean dsa</b>few '; $r = Preg_replace ('/(?! <a. *?>.*?) Red bean (?! [^<]*<\/a>)/I ', ' mung beans ', $s);//$r = Preg_replace ('/red bean/I ', ' mung beans ', $s, 1); Var_dump ($R);
Results
"I ' am Carl small mung bean sprout <a href=" abc ">dfsaf<a href=" Fdsafdsaf "> Big yew </a></a> Carl Fds<b>af Mung bean DSA </b>few "
PS: If there are loopholes, look feel free.
Regular expression substitution excludes specific cases