我在字符串上有几个 preg_replace 未知修饰符警告,但我不知道正则表达式修复 [重复]

Posted

技术标签:

【中文标题】我在字符串上有几个 preg_replace 未知修饰符警告,但我不知道正则表达式修复 [重复]【英文标题】:I have a couple preg_replace unknown modifiers warnings on a string and I don't know the regex fix [duplicate] 【发布时间】:2014-08-12 19:59:49 【问题描述】:

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

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

我还使用正则表达式将<br\> 替换为两个<br\><br\>

我在 wordpress 中的$content 上使用它。

它抛出一个错误,因此the_content(); 中没有返回任何内容

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

我假设如果我修复了这些错误,内容会正常工作,但我不知道如何调整正则表达式。

无论如何这里都是错误:

[12-Aug-2014 19:46:46 UTC] PHP Warning:  preg_replace(): Unknown modifier '>' 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);

我真的需要花一些时间来掌握正则表达式...

【问题讨论】:

【参考方案1】:

您需要在正则表达式中转义 /。应该是\/

应该是 \s* 而不是 s* 来匹配零个或多个空格。

变化:

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

收件人:

(<br\s*\/?>\s*)1,

这里是online demo,您也可以在这里验证您的正则表达式。

【讨论】:

啊,成功了,前两行正则表达式呢? 进行上述两项更改并在上述站点进行测试。如果仍然有任何问题,请分享一些意见。 第一个尝试&lt;p&gt;\s*(&lt;a .*&gt;)?\s*(&lt;img .* \/&gt;)\s*(&lt;\/a&gt;)?\s*&lt;\/p&gt;,第二个尝试&lt;p&gt;\s*(&lt;iframe .*&gt;*.&lt;\/iframe&gt;)\s*&lt;\/p&gt;

以上是关于我在字符串上有几个 preg_replace 未知修饰符警告,但我不知道正则表达式修复 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

警告:preg_replace():未知修饰符

警告:preg_replace():未知修饰符“g”

警告:preg_replace():未知修饰符“h”

Java 计算n对应的二进制位上有几个1,分别在什么位置

arduinouno开发板上有几个usb接口

html 通常情况下,复杂表单上有几个按钮,最后一个按钮具有提交操作。但是如果用户点击返回那么