Подтвердить что ты не робот

Как извлечь параметры запроса из строки URL в PHP?

Пользователи могут вводить URL-адреса с помощью HTML-формы на моем веб-сайте, поэтому они могут вводить что-то вроде этого: http://www.example.com?test=123&random=abc, это может быть что угодно, Мне нужно извлечь значение определенного параметра запроса, в данном случае "test" (значение 123). Есть ли способ сделать это?

4b9b3361

Ответ 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 );