将查询字符串转换为关联数组

2022-08-30 15:13:41

在PHP中,我需要一个函数来将查询字符串从URL转换为PHP关联数组:。http://example.com?key1=value1&key2=value2array ['key1' => 'value1', 'key2' => 'value2']

我已经想到了这段代码。它有效,但我发现它有点长。(PHP为一切提供了内置功能:我很惊讶我没有找到任何开箱即用的东西,就像相反的东西。http_build_query

你能建议一个更好的方法来做到这一点吗?

function getUrlParams($url) {
  $querystring = parse_url($url, PHP_URL_QUERY);
  $a = explode("&", $querystring);
  if (!(count($a) == 1 && $a[0] == "")) {
    foreach ($a as $key => $value) {
      $b = explode("=", $value);
      $a[$b[0]] = $b[1];
      unset ($a[$key]);
    }
    return $a;
  } else {
    return false;
  }
}

答案 1

您可以使用parse_url()从URL中获取atributes

一旦你有了它,你可以使用parse_str()将它们转换为变量,它也适用于多维数组!

$str = "first=value&arr[]=foo+bar&arr[]=baz";

parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

答案 2

如果你的意思是你写的东西,那么它非常简单,不需要其他任何东西,PHP中有一个预定义的Superglobal变量,它本身将所有查询字符串表示为键,值对关联数组。$_GET

例:

// current page URI: http://localhost/test.php?key1=value1&key2=value2

echo '<pre>';
print_r($_GET);
echo '</pre>';

结果:

Array(
    [key1] = value1
    [key2] = value2
)

有关 PHP 超全球转到的更多信息:http://php.net/manual/en/reserved.variables.get.php$_GET


推荐