PHP Conference Nagoya 2025

request_parse_body

(PHP 8 >= 8.4.0)

request_parse_bodyСчитывает и разбирает тело запроса, а затем возвращает результат

Описание

request_parse_body(?array $options = null): array

Функция считывает тело запроса и разбирает его с учётом типа содержимого, который указали в заголовке Content-Type. Пока поддерживается два типа содержимого:

  • application/x-www-form-urlencoded
  • multipart/form-data

Главное назначение функции — разбирать содержимое тела, которое закодировали в формате multipart/form-data, в запросах с HTTP-глаголами кроме POST, которые не заполняют суперглобальные массивы $_POST и $_FILES автоматически.

Предостережение

Функция request_parse_body() считывает тело запроса без буферизации в потоке php://input.

Список параметров

options
Параметр options принимает ассоциативный массив с настройками для разбора, которые переопределяют следующие глобальные директивы файла php.ini:
  • max_file_uploads
  • max_input_vars
  • max_multipart_body_parts
  • post_max_size
  • upload_max_filesize

Возвращаемые значения

Функция request_parse_body() возвращает пару массивов: массив в индексе 0 эквивалентен суперглобальному массиву $_POST, а массив в индексе 1 — суперглобальному массиву $_FILES.

Ошибки

Функция выбрасывает исключение RequestParseBodyException, когда тело запроса не соответствует формату данных заголовка Content-Type.

Функция выбрасывает ошибку ValueError, когда аргумент options содержит недопустимые ключи или недопустимые значения ключей.

Примеры

Пример #1 Пример разбора тела запроса функцией request_parse_body()

<?php

// Разбор запроса и сохранение результата в суперглобальных массивах $_POST и $_FILES
[$_POST, $_FILES] = request_parse_body();

// Вывод содержимого файла, который передали
echo file_get_contents($_FILES['file_name']['tmp_name']);

?>

Пример #2 Пример разбора тела запроса функцией request_parse_body() с модифицированными настройками

<?php

// form.php

assert_logged_in();

// Разрешение большего размера загрузки только для этой формы
[$_POST, $_FILES] = request_parse_body([
'post_max_size' => '10M',
'upload_max_filesize' => '10M',
]);

// Обработка файлов, которые загрузили...

?>
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top