【问题标题】:How can I parse a URL into an associative array?如何将 URL 解析为关联数组?
【发布时间】:2011-10-20 23:48:58
【问题描述】:

我有一个类似http://example.com/size/large/color/red 的网址。如何将 URL 转换为关联数组,以便最终得到:

$my_array("size" => "large", "color" => "red");

请记住,该 URL 可能类似于 http://example.com/color/red/size/large/type/round。所以基本上,键和值可以是任何东西。但是它们的键总是会跟着值。

【问题讨论】:

    标签: php arrays url


    【解决方案1】:
    $url = 'http://example.com/size/large/color/red';
    
    $path = trim(parse_url($url, PHP_URL_PATH), '/');
    $path_chunks = preg_split('/\/+/', $path);
    
    $arr = array();
    
    for($i = 0, $count = count($path_chunks); $i < $count; $i += 2)
    {
       $arr[$path_chunks[$i]] = $path_chunks[$i + 1];
    }
    

    【讨论】:

      【解决方案2】:

      您可以提取构成 URL 的部分,然后逐个循环遍历它们,并将第一个作为键,将第二个作为值。

      $url = 'http://example.com/color/red/size/large/type/round';
      $my_array = array();
      $parts = explode('/', $url);
      for ($i = 3, $len = count($parts); $i < $len; $i += 2)
      {
          $my_array[$parts[$i]] = $parts[$i + 1];
      }
      

      这会产生:

      Array
      (
          [color] => red
          [size] => large
          [type] => round
      )
      

      【讨论】:

      • 此上的 print_r 仅返回 Array ( [color] =&gt; red [] =&gt; ) - 意思是,它仅显示最后一个键/值对。
      • @joeyr,你确定吗?我刚刚运行了上面的确切代码,我得到了一些不同的东西。粘贴在答案中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多