wordpress中的正则表达式false分隔符

时间:2012-05-04 16:33:42

标签: php regex wordpress

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

我在wordpress中找到了这段代码

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

根据doc on php.net |不允许作为分隔符。

有人可以解释一下代码吗?

1 个答案:

答案 0 :(得分:3)

你试过吗?

来自link

  

使用PCRE功能时,要求图案由分隔符包围。分隔符可以是任何非字母数字,非反斜杠,非空白字符。

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

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

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

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