我有一个页面可以链接到以下任何一种格式:
当存在URL的查询部分时,我需要使用PHP捕获它。我尝试使用 parse_url ,但我不确定如何使用它。试过这个
echo (parse_url($_SERVER['REQUEST_URI']['query']));
但它返回Array ...
答案 0 :(得分:6)
你应该这样做:
$parsed = parse_url($_SERVER['REQUEST_URI']);
echo $parsed['query'];
修改强>
如果您只需要URL的查询部分,那么以下Salman的解决方案实际上更好一点:
echo parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY);
答案 1 :(得分:3)
parse_url
的可选第二个参数允许您准确指定所需的URL部分:
<?php
echo parse_url("http://mydomain.com/linkID", PHP_URL_QUERY); // <empty string>
echo parse_url("http://mydomain.com/linkID?9c1023a67eaf46cae864a31097", PHP_URL_QUERY); // 9c1023a67eaf46cae864a31097
另一方面,如果适用,更容易使用服务器变量:
echo isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"] : "";
答案 2 :(得分:1)
$_SERVER['QUERY_STRING'];
这应该是你所需要的。见$_SERVER variables
答案 3 :(得分:1)
parse_url使用以下键返回关联数组(也称为哈希,字典等):
scheme - e.g. http
host
port
user
pass
path
query - after the question mark ?
fragment - after the hashmark #
可能会破坏这样的事情:
scheme user password host port path query fragment
[http]://[santa]:[password]@[www.website.com]:[80]/[page.php]?[var=val]#[anchor]
你好像正在寻找其中一个:
$parsedUrl = parse_url($_SERVER['REQUEST_URI']);
echo $parsedUrl['query'];
echo $_SERVER['query_string'];