PHP: Как разбить URL

Как получить элементы URL-адреса и любые связанные параметры?

Могут появиться два случая: либо URL находится в строке символа и хочется найти его элементы, либо это веб-скрипт, запущенный для обработки данных формы методом POST, из которого хочется извлечь данные.

1) Использование функции parse_url

При разборе URL в строке пригодятся две функции: parse_url и parse_str. Первый разбивает URL на такие элементы, как Location в JavaScript, второй разбивает строку параметров на переменные и значения.

Сравнение с JavaScript

Функция parse_url в эквивалент объекта Location в JavaScript. Ключи ассоциативной таблицы заменяются свойствами объекта «Расположение».

Полный URL-адрес получается с константой __ FILE __ которая является глобальной и не принадлежит таблице, созданной parse_url.

Данные
PHP
JavaScript
Полный URL-адрес
__ ФАЙЛ __
location .href
Протокол (http)
структура
протокол
Область
host
hostname
Каталог и файл
путь
pathname
Привязка к странице
фрагмент
хэш
Параметры
query
поиск
Порт
-
порт
Логин
пользоваться
-
Пароль
пропуск
-
Таблица эквивалентности PHP - JavaScript

Другие различия:

Использование функции parse_url

Пример:

$url = "https://www.iqlevsha.ru/comment/parser-url.php#content";
$arr = parse_url($url)
print_r($arr);

Получится ассоциативная таблица, где ключи подробно описаны в предыдущей таблице.

array(
"scheme" => http,
"host" => www.iqlevsha.ru,
"path" => /comment/parser-url.php,
"fragment" => content
)

Использование функции parse_str

Пример:

$parameters = $arr["query"];

parse_str($parameters, $data);
print_r($data);

$ data - ассоциативный массив, где ключами являются переменные, переданные в параметры, и значения, содержимое этих переменных.

Например:

fichier.php?nom=untel&numero=50

Сформированная таблица будет:

array(
"nom" => untel,
"numero" => 50
)

Исходники и загрузка

2) Использование переменной $ _ SERVER

Во второй части показано, как получить ту же информацию с помощью предустановленной переменной $ _ SERVER и, в частности, получить данные формы для перехода на PHP-сценарий.

Сравнение с parse_url

Данные о сценарии или странице PHP получают с помощью предустановленной переменной $ _ SERVER и списка ключей, соответствующих найденной информации, которые приведены в таблице ниже.

Уточним, что имя домена присваивается непосредственно пользователем. На нашем примере это www.example.com.

Данные
parse_url
Ключи для $ _ SERVER
Полный URL-адрес
__ ФАЙЛ __
домен + REQUEST_URI
Протокол
структура
SERVER_PROTOCOL
Область
host
константа пользователя
Каталог и файл
путь
SCRIPT_NAME
Привязка к странице
фрагмент
-
Параметры
query
QUERY_STRING
Порт
-
-
Логин
пользоваться
Трактуется отдельно
Пароль
пропуск
Трактуется отдельно
Таблица эквивалентности от parse_url до $ _ SERVER

Различия:

Использование предустановленной переменной

Пример:

$protocol = $_SERVER[SERVER_PROTOCOL];

Список ключей представлен в руководстве PHP в разделе: «Предопределенные переменные».

Получение данных из HTML-формы

Пример:

$parameters = $_SERVER[QUERY_STRING];

parse_str($parameters, $data);
print_r($data);

$ data - ассоциативный массив, где ключами являются переменные, переданные в параметры, и значения, содержимое этих переменных.

Подробности см. в первой части статьи.

Исходники и загрузка