(PHP 8 >= 8.4.0)
request_parse_body — 讀取並解析請求主體,然後返回結果
此函數會讀取請求主體並根據 Content-Type
標頭進行解析。目前支援兩種內容類型:
application/x-www-form-urlencoded
multipart/form-data
此函數主要用於解析 HTTP 方法非 POST
的 multipart/form-data
請求,這些請求不會自動填入 $_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
當請求主體根據 Content-Type
標頭判斷為無效時,會拋出 RequestParseBodyException 例外。
當 options
包含無效的鍵或對應鍵的值無效時,會拋出 ValueError 例外。
範例 #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',
]);
// 對上傳的檔案執行一些操作。
?>