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