我在一个字符串上有两个preg_replace未知修饰符警告,我不知道正则表达式的修复


I have a couple preg_replace unknown modifiers warnings on a string and I don't know the regex fix

我有一个字符串抛出了几个php错误。

我正在使用一些正则表达式从图像和iframe中剥离<p>标签。

我也使用regex替换<br'>与两个<br'><br'>

我在wordpress的$content上使用它。

抛出错误,因此在the_content();

中没有返回任何内容。

如果我删除函数,内容看起来很好,尽管没有改变格式。

我想如果我修复这些错误的内容将工作良好,但我不知道如何调整正则表达式。

错误如下:

[12-Aug-2014 19:46:46 UTC] PHP Warning:  preg_replace(): Unknown modifier '&gt;' in /functions.php on line 101
[12-Aug-2014 19:46:46 UTC] PHP Warning:  preg_replace(): Unknown modifier 'f' in /functions.php on line 102
[12-Aug-2014 19:46:46 UTC] PHP Warning:  preg_replace(): Unknown modifier '?' in /functions.php on line 133

当然还有代码:

function filter_ptags($content){
    $content = preg_replace('/<p>s*(<a .*>)?s*(<img .* />)s*(</a>)?s*</p>/iU', '123', $content);
    return preg_replace('/<p>s*(<iframe .*>*.</iframe>)s*</p>/iU', '1', $content);
}
function strip_content($content){
    $content = preg_replace(array('/(<brs*/?>s*){1,}/'), array('<br/><br/>'), $content);
}

我真的需要花点时间掌握一下正则表达式…
  • 需要在正则表达式中转义/。应该是'/

  • 应该是's*而不是s*来匹配零或多个空白

改变:

(<brs*/?>s*){1,}

:

(<br's*'/?>'s*){1,}

这是一个在线演示,你可以验证你的正则表达式