I want to filter url's like bartender/profili/20/friends using preg_match.
Regex:
/^\/bartender\/profili\/d+\/friends/
Unfortunately it doesn't work.
Could somebody help?
Do you want to capture the \d+? If so, enclose them in ( ), that should fix it. Also, if you're regex uses /, I'd suggest using a different delimiter, less escaping that way:
<?php
preg_match(
'~^/bartender/profili/(\d+)/friends~',
'/bartender/profili/20/friends',
$matches
);
var_dump( $matches );
Addendum: and - like everyone already mentioned - you indeed forgot the \ in front of the d+, but that was easy to overlook if you have to escape every / ;)
You have a slash in front of d+ (and have selected a badly readable delimiter for this situation). Try this:
#^\/bartender\/profili\/\d+\/friends#
you forgot to escape \d+
/^\/bartender\/profili\/\d+\/friends/
d+"bartender\/profili\/[0-9]+\/friends" also works. Here's an excellent resource for trying regular expressions: http://www.regextester.com/
You do not have to escape forward slashes, but you need to escape meta-characters (like 'd' for decimal digits)
^/bartender/profili/\d+/friends/