(PHP 4, PHP 5, PHP 7, PHP 8)
parse_str — Разбирает строку как аргументы URL-адреса
Функция разбирает строку string как аргументы URL-адреса
и заполняет переменную result массивом, в котором ключами становятся названия, а значениями — значения аргументов.
При пропуске параметра result функция
создаст переменные в текущей области видимости.
stringСтрока в формате аргументов URL-адреса.
result
Переменная по ссылке. Функция заполнит переменную парами
«ключ — значение», которые извлечёт из строки string.
При пропуске параметра result
каждый ключ станет отдельной переменной в локальной области видимости.
Начиная с PHP 7.2 вызов функции с одним аргументом УСТАРЕЛ;
разработчики языка НАСТОЯТЕЛЬНО рекомендуют вызывать функцию
с аргументом result.
С PHP 8.0.0 параметр result стал обязательным.
Функция не возвращает значения после выполнения.
| Версия | Описание |
|---|---|
| 8.0.0 |
Параметр result стал обязательным.
|
| 7.2.0 |
Вызов функции parse_str() без второго аргумента теперь
выдаёт ошибку уровня E_DEPRECATED.
|
Пример #1 Пример разбора аргументов URL-адреса функцией parse_str()
<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
// Правильный вызов с двумя аргументами
parse_str($str, $output);
echo $output['first'], PHP_EOL; // value
echo $output['arr'][0], PHP_EOL; // foo bar
echo $output['arr'][1], PHP_EOL; // baz
Функция заменит пробелы и точки в названиях аргументов URL-адреса символами подчёркивания
прежде чем создать ключи массива или локальные переменные,
поскольку в названия PHP-переменных нельзя включать пробелы или точки.
Эти же правила относятся к названиям ключей в массиве
result при вызове функции с двумя аргументами.
Пример #2 Пример искажения названия аргумента функцией parse_str()
<?php
parse_str("My Value=Something", $output);
echo $output['My_Value']; // Выводит: SomethingЗамечание:
Директива max_input_vars ограничивает количество входных переменных, которое обработает функция parse_str(). Превышение предела выдаёт ошибку уровня
E_WARNING, а переменные за пределами ограничения не добавляются в результат. Предустановленное значение директивы max_input_vars — 1000.
Замечание:
Перед заполнением массива
resultфункция декодирует названия и значения аргументов URL-адреса по правилам функции urldecode(). Названия переменных, которые функция создаёт при пропуске второго аргумента, тоже декодируются.
Замечание:
Строку аргументов текущего запроса содержит элемент $_SERVER['QUERY_STRING']. Дополнительную информацию о переменных запроса содержит раздел «Переменные из внешних источников».