parse_str

(PHP 4, PHP 5, PHP 7, PHP 8)

parse_strРазбирает строку как аргументы URL-адреса

Описание

parse_str(string $string, array &$result): void

Функция разбирает строку 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']. Дополнительную информацию о переменных запроса содержит раздел «Переменные из внешних источников».

Смотрите также

  • parse_url() - Разбирает URL-адрес и возвращает компоненты адреса
  • pathinfo() - Возвращает информацию о пути к файлу
  • http_build_query() - Генерирует URL-кодированную строку запроса
  • urldecode() - Декодирует строку, закодированную для безопасного включения в структуру URL-адреса