Пользователи могут вводить URL-адреса с помощью HTML-формы на моем веб-сайте, поэтому они могут вводить что-то вроде этого: http://www.example.com?test=123&random=abc, это может быть что угодно, Мне нужно извлечь значение определенного параметра запроса, в данном случае "test" (значение 123). Есть ли способ сделать это?
Как извлечь параметры запроса из строки URL в PHP?
Ответ 1
Вы можете использовать parse_url
и parse_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
.
Ответ 2
Мне нужно было проверить URL-адрес, который был относительно для нашей системы, поэтому я не мог использовать parse_str. Для тех, кто в этом нуждается:
$urlParts = null;
preg_match_all("~[\?&]([^&]+)=([^&]+)~", $url, $urlParts);
Ответ 3
имя хоста необязательно, но требуется, по крайней мере, знак вопроса в начале строки параметров:
$inputString = '?test=123&random=abc&usersList[]=1&usersList[]=2' ;
parse_str ( parse_url ( $inputString , PHP_URL_QUERY ) , $params );
print_r ( $params );