2

我是正则表达式的新手,我有这个简单的疑问。

我在wordpress中找到了这段代码

$self = preg_replace('|^.*/wp-admin/|i', '', $self); 

根据php.net 上的文档, |不允许作为分隔符..

有人可以解释代码吗?

4

1 回答 1

3

你试过了吗?

从您的链接

使用 PCRE 函数时,需要用分隔符将模式括起来。定界符可以是任何非字母数字、非反斜杠、非空白字符。

|一个完全有效的分隔符也是如此。当您阅读该页面上的评论时,他们建议不要使用元字符(如|)作为分隔符,而应该在正则表达式中使用它们。

由于您的示例中没有交替,$self = preg_replace('|^.*/wp-admin/|i', '', $self);因此没有问题,并且按预期工作。

当您在正则表达式中有交替时(例如preg_match("|(F|f)oo|", "Foobar")),您将收到警告“未知修饰符'f'”,因为解释器认为正则表达式确实在第一次交替时结束。

结论:允许但不建议使用正则表达式元字符,如|, ^, +, ... 作为正则表达式分隔符。

于 2012-05-04T21:42:35.420 回答