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