我是正则表达式的新手,我有一个简单的疑问。
我在wordpress中找到了这段代码
$self = preg_replace('|^.*/wp-admin/|i', '', $self);
根据文件,php.net |
不允许作为分隔符。
有人可以解释代码吗?
你试过吗?
从您的链接:
使用 PCRE 函数时,需要用分隔符将模式括起来。分隔符可以是任何非字母数字、非反斜杠、非空格字符。
所以|
是一个完全有效的分隔符。当您阅读该页面上的评论时,他们建议不要使用元字符(如 |
)作为分隔符,因为它们应该在正则表达式中使用。
由于您的示例中没有交替$self = preg_replace('|^.*/wp-admin/|i', '', $self);
因此没有问题,并且它按预期工作。
当您在正则表达式中有交替时(例如 preg_match("|(F|f)oo|", "Foobar")
) 您将收到警告"未知修饰符 'f'",因为解释器认为正则表达式确实在第一次交替时结束。
结论:允许但不建议使用正则表达式元字符,如|
、^
、+
、...作为正则表达式分隔符。