使用REGEX替换两个HTML标记之间的所有"foo"(PHP代码)

Pro*_*4me 0 php regex

我想要一个正则表达式代码,将所有"foo"字符串替换为"bar",在html标签之前> </ pre>

这是一个例子:

< html>
< p> blah blah blah foo try foo< /p>
< pre> foo try foo word foofoo < /pre>
< /html>
Run Code Online (Sandbox Code Playgroud)

应该是

< html>
< p> blah blah blah foo try foo< /p>
< pre> bar try bar word barbar < /pre>
< /html>
Run Code Online (Sandbox Code Playgroud)

所以,这意味着pre之前的所有foo都应该替换为.

我试图使用这个正则表达式模式,但它无法正常工作.

do {
$string = preg_replace('/< pre>([^)]*)foo([^)]*< /pre>)/U', '\1boo\2', $string, -1,$count);
}while($count != 0);
echo $string;
Run Code Online (Sandbox Code Playgroud)

对不起我的英文谢谢你,

小智 5

$string = '< html>
< p> blah blah blah foo try foo< /p>
< pre> foo try foo word foofoo < /pre>
< /html>';
$string = preg_replace('/foo(?=(?:.(?!< pre>))*< \/pre>)/Um', 'boo', $string);
echo $string;
Run Code Online (Sandbox Code Playgroud)