如何将搜索网址拆分为关联数组

时间:2014-01-18 20:51:38

标签: php arrays drupal solr

所以我想采取这样的字符串,

  

q =糖用甜菜&qf =蔬菜&范围=时间:[34-40]

并将其分解为可以放入关联数组并发送到Solr服务器的单独部分。

我希望它看起来像这样

  

['q'] => ['甜菜],   ['qf'] => [ '蔬菜']

使用urlencode后我得到了

  

答疑3DSugar +甜菜%26qf%3Dvegetables%26range%3Dtime%3A%5B34-40%5D

现在我想我会制作两个独立的阵列,使用preg_split()并获取&之间的信息。和=符号或=和&签名,但这留下了最终和第一的问题,因为他们不是以&或以&。结尾。

在此之后,计划是采用两个数组并将它们与array_combine()结合起来。

那么,我怎么能做一个preg_split来解决字符串的第一个和最后一个条目的问题?这种做法对服务器来说要求太高吗?谢谢你的帮助。

PS:我正在使用Drupal ApacheSolr执行此操作,这就是我需要拆分它们的原因。例如,需要将它们发送到将构建q和qf的对象。

3 个答案:

答案 0 :(得分:1)

您不需要正则表达式来解析查询字符串。 PHP已经有一个内置函数,正是这样做的。使用parse_str()

$str = 'q=Sugar Beet&qf=vegetables&range=time:[34-40]';
parse_str($str, $params);
print_r($params);

产生输出:

Array
(
    [q] => Sugar Beet
    [qf] => vegetables
    [range] => time:[34-40]
)

答案 1 :(得分:1)

您可以使用parse_url()功能/.

答案 2 :(得分:0)

也:

parse_str($_SERVER['QUERY_STRING'], $params);