【问题标题】:Parsing URL query in PHP在 PHP 中解析 URL 查询
【发布时间】:2013-12-23 20:03:04
【问题描述】:

假设 URL 为 www.domain.org?x=1&y=2&z=3,在不使用 GET 或 REQUEST 的情况下,在 PHP 中分离 URL 的查询元素的智能方法是什么?

  $url = parse_url($url);
  echo $url[fragment];

我认为不可能单独返回查询部分,是吗?据我所知,查询只会说x=1&y=2&z=3,但如果我错了,请告诉我。否则,你会怎么解析$url[query]?


Fragment 应该是 Query。对困惑感到抱歉;我正在学习!

【问题讨论】:

  • 仅供参考:$url[fragment] 表示“获取常量 fragment 的值并使用它从 $url 获取密钥”。你可能是指$url['fragment']?片段是# btw 之后的东西。如果您正在寻找? 和# 之间的变量,这就是“查询”。
  • 您是在寻找$_GET['x'],还是在解析与属于您的脚本的网址分开的网址?
  • 好的,所以在 url 中的 ? 之后称为参数。现在明白了。我已经了解$_GET[],但我的想法是处理$url,而不是使用该函数。
  • query 或 Query?

标签: php parsing url


【解决方案1】:

您可以进行第二步,使用parse_str解析查询字符串。

$url = 'www.domain.org?x=1&y=2&z=3';
$url_parts = parse_url($url);
parse_str($url_parts['query'], $query_parts);
var_dump($query_parts);

我假设您指的是查询字符串而不是片段,因为片段没有标准模式。

【讨论】:

    【解决方案2】:

    parse_url 函数返回几个组件,包括query。要解析它,您应该运行 parse_str。

    $parsedUrl = parse_url($url);
    parse_str($parsedUrl['query'], $parsedQueryString);
    

    如果您只是要解析您的 HTTP 请求 URL:

    • 使用$_REQUEST['x']、$_REQUEST['y']和$_REQUEST['z']变量访问x、y和z参数;

    • 使用$_SERVER['QUERY_STRING'] 获取整个 URL 查询字符串。

    【讨论】:

      【解决方案3】:

      我在一些答案中遇到了错误,但它们确实引导我找到了正确的答案。

       $url = 'www.domain.org?x=1&y=2&z=3';
       $query = $url[query]; 
       parse_str($query);
       echo "$x &y $z";
      

      这会输出1 2 3,这是我想弄清楚的。

      【讨论】:

        【解决方案4】:

        作为没有错误检查的单行代码

        parse_str(parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY), $query);
        

        $query 将包含查询字符串参数。
        与 PHP 的 $_GET 不同,它适用于任意长度的查询参数。

        【讨论】:

          【解决方案5】:

          我强烈推荐使用this URL wrapper(我已经写过)。

          它能够解析像 protocol://username:password@subdomain.domain.tld:80/some/path?query=value#fragment 这样复杂的 URL,并且还有更多好东西。

          【讨论】:

            猜你喜欢
            • 2021-05-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-11-23
            • 2018-12-07
            • 1970-01-01
            相关资源
            最近更新 更多