繁体   English   中英

在PHP中解析URL查询

[英]Parsing URL query in PHP

假设有一个www.domain.org?x=1&y=2&z=3的网址,那么在不使用GET或REQUEST的情况下,在php中分离出网址的查询元素的智能方法是什么?

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

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

编辑:片段应该是查询。 对不起,我正在学习!

您可以执行第二步并使用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);

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

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查询字符串。

上面的一些答案我得到了错误,但他们确实引导我找到了正确的答案。 多谢你们。

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

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

作为一个没有错误检查的单线

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

$query将包含查询字符串参数
与PHP的$_GET ,这将适用于任何长度的查询参数

我强烈建议使用这个url包装器https://github.com/weew/url (我写的)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM