如何用Laravel函数优雅提取URL中query参数为关联数组?
解决方法
嘿,这事儿在Laravel里其实有非常顺手的简洁方案,不用自己写一堆字符串解析逻辑~
首先注意一下你给出的URL里,参数之间用了逗号分隔,这不符合标准URL的参数格式(标准是用&),所以第一步我们先把逗号替换成&,之后直接用Laravel的Request类就能自动帮我们解析成目标数组:
use Illuminate\Http\Request; // 你的原始URL $rawUrl = 'www.test.com?query[ch_id]=1,query[category_id]=2,query[item_id]=3'; // 替换逗号为标准的URL参数分隔符& $formattedUrl = str_replace(',', '&', $rawUrl); // 创建一个请求实例,Laravel会自动解析URL中的参数 $request = Request::create($formattedUrl); // 直接取出query数组,就是你想要的结果 $query = $request->query('query');
执行完之后,$query就完全是你需要的数组:
[ 'ch_id' => 1, 'category_id' => 2, 'item_id' => 3, ]
补充说明
如果你的原始URL其实是标准格式(参数用&分隔,只是输入时写错成了逗号),那连str_replace这一步都可以省略,直接用Request::create()解析就行。Laravel的请求类会自动识别query[xxx]这种数组风格的参数,把它们合并成一个关联数组,完美匹配你的需求。
内容的提问来源于stack exchange,提问作者Jenski
相关产品推荐
相关产品推荐

