用户可以在我的网站上使用HTML表单输入网址,因此他们可能输入如下内容:http://www.example.com?test=123&random=abc,它可以是任何内容。我需要提取某个查询参数的值,在本例中为'test'(值为123)。有没有办法做到这一点?
答案 0 :(得分:51)
$query = parse_url('http://www.example.com?test=123&random=abc', PHP_URL_QUERY);
parse_str($query, $params);
$test = $params['test'];
parse_url
允许在不同的部分(方案,主机,路径,查询等)拆分URL;这里我们用它来获取查询(test=123&random=abc
)。然后我们可以使用parse_str
解析查询。
答案 1 :(得分:2)
我需要检查一个与我们系统相关的网址,因此我无法使用parse_str。对于任何需要它的人:
$urlParts = null;
preg_match_all("~[\?&]([^&]+)=([^&]+)~", $url, $urlParts);
答案 2 :(得分:1)
主机名是可选的,但至少需要参数字符串开头的问号:
$inputString = '?test=123&random=abc&usersList[]=1&usersList[]=2' ;
parse_str ( parse_url ( $inputString , PHP_URL_QUERY ) , $params );
print_r ( $params );