我想使用preg_match过滤网址,如bartender / profili / 20 /朋友。
正则表达式:
/^\/bartender\/profili\/d+\/friends/
不幸的是它不起作用。
有人可以帮忙吗?
答案 0 :(得分:3)
你想拍摄\ d +吗?如果是这样,请将它们包含在()中,以便修复它。另外,如果你正则表达式使用/,我建议使用不同的分隔符,减少转义:
<?php
preg_match(
'~^/bartender/profili/(\d+)/friends~',
'/bartender/profili/20/friends',
$matches
);
var_dump( $matches );
附录:并且 - 就像每个人已经提到过的那样 - 你确实在d +面前忘记了\,但是如果你必须逃避每一个/那那很容易被忽视;)
答案 1 :(得分:2)
你忘了逃避\d+
/^\/bartender\/profili\/\d+\/friends/
答案 2 :(得分:2)
您在d+
之前缺少反斜杠:\d+
答案 3 :(得分:2)
d+
前面有一个斜杠(并为此情况选择了一个难以读取的分隔符)。试试这个:
#^\/bartender\/profili\/\d+\/friends#
答案 4 :(得分:2)
“bartender\/profili\/[0-9]+\/friends
”也有效。这是尝试正则表达式的绝佳资源:http://www.regextester.com/
答案 5 :(得分:-1)
你不必转义正斜杠,但你需要转义元字符(如'd'表示十进制数字)
^ /招待/ PROFILI / \ d + /朋友/