在正则表达式中正确转义URL斜杠

6

我需要帮助在搜索URL路径的模式中转义斜杠。我试图检查路径是否包含在/orders/后面的任何数字,就像这样:

$str = '/admin/store/orders/20284?width...';

if ( preg_match ( '/orders/([0-9]+)/', $str, $matches ) )
{
    print_r($matches);
}

然而,我无法正确地转义斜杠。有人能帮忙吗?谢谢。

尝试使用'\/orders\/([0-9]+)\/' - Jorge Campos
1个回答

4

转义可以使用反斜杠 (\/)。但用于分隔正则表达式的斜杠字符可以是任何字符:

if ( preg_match ( '~orders/([0-9]+)~', $str, $matches ) )

不需要转义即可工作。


我在使用正则表达式时会在 #| 之间反复切换,因为我发现后者更易于阅读,但如果您的模式中有备选搜索 |,它就无法正常工作。 - miken32
@miken32:确实,这就是为什么使用|作为分隔符不是一个好选择的原因。请注意,如果您使用x修饰符或序列(?#comment)#也具有特殊含义。大多数情况下,我使用~(比/更好的选择)。 - Casimir et Hippolyte
分隔符已经根据广泛的要求进行了更改。感谢您的反馈! - miken32

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接