Preg_grep在可能性数组中查找请求URI



我有一个数组,其中包含可能的请求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));

最新更新