Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将搜索url拆分为关联数组_Php_Arrays_Drupal_Solr - Fatal编程技术网

Php 如何将搜索url拆分为关联数组

Php 如何将搜索url拆分为关联数组,php,arrays,drupal,solr,Php,Arrays,Drupal,Solr,所以我想拿一根这样的绳子 q=甜菜和qf=蔬菜和范围=时间:[34-40] 并将其分解为单独的部分,这些部分可以放入关联数组并发送到Solr服务器 我希望它看起来像这样 ['q']=>['甜菜], ['qf']=>['qf'] 使用urlencode后,我得到 q%3糖+甜菜%26qf%3蔬菜%26范围%3时间%3A%5B34-40%5D 现在我想我应该制作两个单独的数组,使用preg_split()并获取&和=号或=和&号之间的信息,但这就留下了final和first的问题,因为它们不以&开头

所以我想拿一根这样的绳子

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

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

我希望它看起来像这样

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

使用urlencode后,我得到

q%3糖+甜菜%26qf%3蔬菜%26范围%3时间%3A%5B34-40%5D

现在我想我应该制作两个单独的数组,使用preg_split()并获取&和=号或=和&号之间的信息,但这就留下了final和first的问题,因为它们不以&开头,也不以&结尾

在此之后,计划将这两个数组与array_combine()合并

那么,如何进行preg_分割来解决字符串的第一个和最后一个条目的问题呢?这样做会不会对服务器要求太高?谢谢你的帮助


PS:我正在使用Drupal ApacheSolr来完成这项工作,这就是为什么我需要拆分这些。例如,它们需要发送到一个将以不同方式构建q和qf的对象。

您不需要正则表达式来解析查询字符串。PHP已经有了一个内置函数,可以完全做到这一点。使用:

生成输出:

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


您可以使用函数/

这非常有效!非常感谢这是一个很大的帮助。现在我还应该在这个请求上使用urlencode吗?@user3210277:取决于您想要什么。如果您要通过
GET
发送这些信息,那么这样做是一个很好的做法。
Array
(
    [q] => Sugar Beet
    [qf] => vegetables
    [range] => time:[34-40]
)
parse_str($_SERVER['QUERY_STRING'], $params);