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!';
}
}