所以我想采取这样的字符串,
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的对象。
答案 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);