让我说一个:
$url = "bla.php?test1=a&test2=b&test1=c&test2=d&test1=e&test2=f&test1=g&test2=h&test1=i&test2=j";
然后我要运行自定义的函数getToArray(“ test1”),该函数将创建一个具有值 [“ a”,“ c”,“ e”, “ g”,“ i”]
我正在设法弄清楚,但到目前为止还没有运气。
请注意,在使用getToArray(“ test 2 ”)的情况下,$ _ GET中的最后一个值为“ j”,它是字符串的结尾...
答案 0 :(得分:0)
这应该做您想要的。基本上,它一直在爆炸url
,首先是?
来获取查询字符串,然后是&
来获取单独的键/值对,然后使用{{ 1}}以获取键和值。如果键与搜索字符串匹配,则将其添加到输出数组。
=
输出:
function getToArray($url, $key) {
$values = array();
list (, $query_string) = explode('?', $url, 2);
foreach (explode('&', $query_string) as $param) {
list($k, $v) = explode('=', $param, 2);
if ($k == $key) $values[] = $v;
}
return $values;
}
print_r(getToArray($url, 'test1'));
print_r(getToArray($url, 'test2'));
答案 1 :(得分:0)
您可以先从网址中删除第一段。
然后由&
爆炸,然后由=
爆炸
function getToArray($url, $key)
{
$arr = explode("&", $url);
$temp = [];
array_walk($arr, function ($item, $key) use (&$temp) {
$d = explode('=', $item);
$temp[$d[0]][] = $d[1];
});
return $temp[$key];
}
$url = str_replace('bla.php?', '', "bla.php?test1=a&test2=b&test1=c&test2=d&test1=e&test2=f&test1=g&test2=h&test1=i&test2=j");
$result = getToArray($url, 'test1');
print_r($result);