【发布时间】:2017-11-27 22:36:59
【问题描述】:
我已经为此工作了一段时间。当我研究 PHP 警告时,我相信以下 PHP 代码需要在后半部分使用分隔符才能使其正常工作。
这里是代码,
$pee = preg_replace('!<p><!--(.*?)--></p>!ise', " '<!--' . stripslashes(clean_pre('$1')) . '-->' ", $pee);
这是我得到的警告,
警告:preg_replace():未知修饰符'-'
我发现当我将代码的后半部分放在一个新行时,这就是警告所指的地方,所以它的后半部分需要修复语法。
似乎破折号被视为修饰符,因此使用分隔符显然可以纠正这一点。我尝试添加分隔符,但每个都失败并且警告没有解决。
我是 PHP 新手,非常感谢您的帮助。
谢谢
【问题讨论】:
-
你有分隔符 (!) 你需要转义
-
e修饰符也被弃用/删除,具体取决于您的 PHP 版本。你应该使用preg_replace_callback。 (“此功能在 PHP 5.5.0 中已弃用,并在 PHP 7.0.0 中删除。”)-php.net/manual/en/reference.pcre.pattern.modifiers.php -
要添加到@iainn 的答案,第二个参数周围的那些双引号不应该在那里。您可以判断,因为语法突出显示将
stripslashes()视为字符串的一部分。 -
@rickdenhaan 实际上,在使用
e修饰符时这是有效的,尽管如前所述,这是不推荐使用(或完全删除)的行为。 -
@iainn 我们生活和学习 ;-) 我从来不知道。