我一直在研究这个问题。当我研究PHP警告时,我相信下面的PHP代码需要在后半部分使用分隔符来使其工作。
这是代码,
$pee = preg_replace('!<p><!--(.*?)--></p>!ise', " '<!--' . stripslashes(clean_pre('$1')) . '-->' ", $pee);
这是我得到的警告,
警告:preg_replace():未知修饰符' - '
我发现当我将后半部分代码放在一个新行上时,就是警告引用的地方,所以后半部分需要修复语法。
看起来短划线被视为修饰符,因此显然使用分隔符将纠正错误。我试图添加分隔符,但每个都失败了,警告也没有解决。
我是PHP的新手,非常感谢您的帮助。
由于
答案 0 :(得分:2)
如果您使用!
围绕正则表达式,那么您还需要在模式中转义该字符:
!<p><!--(.*?)--></p>!ise
^ This needs escaping.
你应该能够使用它:
$pee = preg_replace('!<p><\!--(.*?)--></p>!ise', " '<!--' . stripslashes(clean_pre('$1')) . '-->' ", $pee);
(或者只选择不同的分隔符(/
等)。
您收到该错误的原因是-
是!
之后的第一个字符,因此PHP假设您将其作为第一个修饰符提供。
编辑:正如@ chris85所提到的,e
修饰符不再是一种好习惯,请参阅此问题以获取有关更新代码的一些建议:Replace preg_replace() e modifier with preg_replace_callback