最简单的方法
创建一个单独的变量来保存正则表达式;这样,您可以简单地注释掉语句:preg_replace()
$re = '#<br\s*/?>(?:\s*<br\s*/?>)+#i';
// $string = preg_replace($re, '<br />', $string);
使用字符类进行修复
要修复行注释,您可以通过放入字符类中来分解,如下所示:?>
>
$string = preg_replace('#<br\s*/?[>](?:\s*<br\s*/?[>])+#i', '<br />', $string);
^ ^ ^ ^
要修复阻止注释,可以将其应用于 :/
$string = preg_replace('#<br\s*[/]?>(?:\s*<br\s*[/]?>)+#i', '<br />', $string);
^ ^ ^ ^
要修复这两种注释样式,您可以将 和 放入它们自己的字符类中。/
>
使用 /x
修饰符修复
修饰符 - aka - 忽略正则表达式中的空格和换行符(除非它们出现在字符类中);这样就可以添加空格来分隔有问题的字符。要修复这两种注释样式:x
PCRE_EXTENDED
$string = preg_replace('#<br\s* /? >(?:\s*<br\s* /? >)+#ix', '<br />', $string);
^ ^ ^ ^