在哪里添加分隔符 - PHP

时间:2017-11-27 22:36:59

标签: php regex delimiter

我一直在研究这个问题。当我研究PHP警告时,我相信下面的PHP代码需要在后半部分使用分隔符来使其工作。

这是代码,

$pee = preg_replace('!<p><!--(.*?)--></p>!ise', " '<!--' .  stripslashes(clean_pre('$1'))  . '-->' ", $pee);

这是我得到的警告,

  

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

我发现当我将后半部分代码放在一个新行上时,就是警告引用的地方,所以后半部分需要修复语法。

看起来短划线被视为修饰符,因此显然使用分隔符将纠正错误。我试图添加分隔符,但每个都失败了,警告也没有解决。

我是PHP的新手,非常感谢您的帮助。

由于

1 个答案:

答案 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