【问题标题】:PHP URL QUERY to array [duplicate]PHP URL查询到数组[重复]
【发布时间】:2019-04-15 09:55:09
【问题描述】:

我对此有疑问:

<?php $url = 'aa=bb&cc=dd&ee=ff';

对于这样的事情:

<?php $url = array('aa' => 'bb', 'cc' => 'dd', 'ee' => 'ff');

我的代码:

<?php

$url = 'aa=bb&cc=dd&ee=ff';
preg_match_all('[(\w+)=(\w+)]', $url, $matches);
var_export($matches);

结果:

array ( 0 => array ( 0 => 'aa=bb', 1 => 'cc=dd', 2 => 'ee=ff', ), 1 => array ( 0 => 'aa', 1 => 'cc', 2 => 'ee', ), 2 => array ( 0 => 'bb', 1 => 'dd', 2 => 'ff', ), )

几乎没关系,我只是想摆脱这第一把钥匙。感谢您的帮助。

【问题讨论】:

  • 这里的关键教训是,对于像这样的常见问题(分解 URL 查询字符串),总是有一个已经编写、测试和调试过的现有解决方案。

标签: php url preg-match-all


【解决方案1】:

实际上,您可以通过许多不同的方式获得关联数组,例如使用 regex、使用 &amp;explode 等等。

但是如果我是你,我会使用parse_str()

<?php
$url = 'aa=bb&cc=dd&ee=ff';
parse_str($url, $query);
print_r($query);
?>

输出:

Array (
 [aa] => bb 
 [cc] => dd 
 [ee] => ff 
)

演示: https://3v4l.org/fjadK

【讨论】:

  • 谢谢@dont-angry-me,你的方法肯定更好! :)
  • @sopskirk 不客气。祝你好运:)
【解决方案2】:

parse_str() 函数将查询字符串解析为变量。

$url = 'aa=bb&cc=dd&ee=ff';

parse_str($url, $matches);

print_r($matches);

【讨论】:

    猜你喜欢
    • 2013-04-10
    • 2020-07-28
    • 2016-10-29
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    相关资源
    最近更新 更多