如何从PHP中的URL字符串中提取查询参数?

时间:2011-01-24 16:15:35

标签: php regex

用户可以在我的网站上使用HTML表单输入网址,因此他们可能输入如下内容:http://www.example.com?test=123&random=abc,它可以是任何内容。我需要提取某个查询参数的值,在本例中为'test'(值为123)。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:51)

您可以像这样使用parse_urlparse_str

$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 );