Php 检查uri字符串是否与列表中的任何模式匹配

Php 检查uri字符串是否与列表中的任何模式匹配,php,regex,Php,Regex,我想检查当前的$uri\u字符串是否与这些模式匹配 $uri_string = 'project/details/1258'; $uri_patterns = [ 'project/foo/', 'project/bizz/', ]; foreach($uri_patterns as $pattern) { if(preg_match('/' . $pattern. '/i', $uri_string) == 1) { echo 'Is a match

我想检查当前的
$uri\u字符串
是否与这些模式匹配

$uri_string = 'project/details/1258';

$uri_patterns = [
   'project/foo/',
    'project/bizz/',
];


foreach($uri_patterns as $pattern) {
    if(preg_match('/' . $pattern. '/i', $uri_string) == 1) {
        echo 'Is a match!';
    }
}

因此,如果在某个时刻,
$uri_string='project/foo/123/someotherparams'
那么这应该与
'project/foo/'
模式匹配。我怎样才能做到这一点?

我认为您需要避开那些前斜杠:

$uri_patterns = [
    'project\/foo\/',
    'project\/bizz\/',
];
然后,对于您的比赛,请使用:

preg_match('/' . $pattern . '/i', $uri_string, $matches);
if (!empty($matches)) {
    echo 'Is a match!';
}

我认为你需要避开那些前斜杠:

$uri_patterns = [
    'project\/foo\/',
    'project\/bizz\/',
];
然后,对于您的比赛,请使用:

preg_match('/' . $pattern . '/i', $uri_string, $matches);
if (!empty($matches)) {
    echo 'Is a match!';
}

您需要从正则表达式中转义
/
斜杠,如:

$uri_string = 'project/details/1258';

$uri_patterns = [
   'project/foo/',
    'project/bizz/',
];


foreach($uri_patterns as $pattern) {
    $pattern = preg_quote($pattern, '/');
    if(preg_match("/$pattern/i", $uri_string) == 1) {
        echo 'Is a match!';
    }
}
这用于避开斜杠

或者,您可以对正则表达式使用不同的
分隔符,如

或者您可以完全忽略正则表达式并使用字符串解析函数,如:

foreach($uri_patterns as $pattern) {
    if(strpos($uri_string, $pattern) !== false) {
        echo 'Is a match!';
    }
} 

您需要从正则表达式中转义
/
斜杠,如:

$uri_string = 'project/details/1258';

$uri_patterns = [
   'project/foo/',
    'project/bizz/',
];


foreach($uri_patterns as $pattern) {
    $pattern = preg_quote($pattern, '/');
    if(preg_match("/$pattern/i", $uri_string) == 1) {
        echo 'Is a match!';
    }
}
这用于避开斜杠

或者,您可以对正则表达式使用不同的
分隔符,如

或者您可以完全忽略正则表达式并使用字符串解析函数,如:

foreach($uri_patterns as $pattern) {
    if(strpos($uri_string, $pattern) !== false) {
        echo 'Is a match!';
    }
}