我有一个数组,其中包含可能的请求URI。一些数组值可能包含逗号分隔的URI:
array(
0 => 'GET /, GET /something',
1 => 'GET /login',
2 => 'GET /user/profile',
)
假设我想找到包含"GET/something"的密钥。如何使用preg_grep来执行此操作?目前,我正在尝试这个:
preg_grep('/(.*)GET \'.$uri.'(.*)/', $array);
然而,我只得到一个空数组。知道我做错了什么吗?
与其在preg_grep的字符串中包含$uri,不如先将其连接到$pattern var中(为了便于阅读,还可以按照上面的注释进行回声和检查):
$uri = 'something';
$pattern = '/(.*)GET /'.$uri.'(.*)/';
$array = preg_grep($pattern, $starting_array);
print_r($array);
为了具体回答您的问题,您避开了错误类型的斜杠:p
尝试
$array = array(
0 => 'GET /, GET /something',
1 => 'GET /login',
2 => 'GET /user/profile',
);
$uri = 'something';
$matches = preg_grep('{(.*)GET /'.$uri.'(.*)}', $array);
var_dump(array_search($matches[0], $array));
试试这个:$arr=数组('GET/,GET/something','GET/login','GET/用户/配置文件');
preg_match("/GETs*/([^n]+)/", join("n", $arr), $matched);
print_r($matched);
我没有PHP来测试它,但根据文档,像这样简单的东西可以工作:
array_keys(preg_grep('!bGET /somethingb!', $array));