Ответ 1
Для любого URL-адреса в виде строки:
if (parse_url($url, PHP_URL_QUERY))
Если для URL-адреса текущего запроса просто:
if ($_GET)
Это легко. Кажется, есть много решений, чтобы определить, содержит ли URL определенный ключ или значение, но, как ни странно, я не могу найти решение для определения того, действительно ли у URL-адреса есть или нет запроса.
Используя PHP, я просто хочу проверить, имеет ли текущий URL-адрес строку запроса. Например: http://abc.com/xyz/?key=value VS. http://abc.com/xyz/.
Для любого URL-адреса в виде строки:
if (parse_url($url, PHP_URL_QUERY))
Если для URL-адреса текущего запроса просто:
if ($_GET)
Самый простой способ - проверить, действительно ли $_GET[]
содержит что-либо. Это можно сделать с помощью функции empty()
следующим образом:
if(empty($_GET)) {
//No variables are specified in the URL.
//Do stuff accordingly
echo "No variables specified in URL...";
} else {
//Variables are present. Do stuff:
echo "Hey! Here are all the variables in the URL!\n";
print_r($_GET);
}
Вот так:
if (isset($_SERVER['QUERY_STRING'])) {
}
parse_url
в большинстве случаев кажется логичным выбором. Однако я не могу придумать случай, где "?" в URL-адресе не будет означать начало строки запроса, поэтому для (очень незначительного) повышения производительности вы можете пойти с
return strpos($url, '?') !== false;
Более 1 000 000 итераций среднее время для strpos было около 1,6 секунды против 1,8 для parse_url. При этом, если ваше приложение не проверяет миллионы URL-адресов для строк запроса, я бы пошел на parse_url
.