首頁 > 後端開發 > php教程 > 如何在 PHP 中手動解析 PUT 請求的多部分/表單資料資料?

如何在 PHP 中手動解析 PUT 請求的多部分/表單資料資料?

Patricia Arquette
發布: 2024-10-29 11:32:30
原創
870 人瀏覽過

How to Manually Parse Multipart/Form-Data Data for PUT Requests in PHP?

在PHP 中手動解析PUT 請求的原始多部分/表單資料資料

處理多部分/表單資料請求時,尤其是在HTTP PUT 操作的上下文中,PHP 的內建解析可能不會像處理POST 請求那樣自動處理原始資料。為了解決這個問題,需要手動解析。

擷取原始資料

首先,使用file_get_contents('php://input' 擷取原始HTTP 請求正文).

解析Content-Type 標頭

使用正則表達式從Content-Type 標頭中提取多部分邊界:

<code class="php">preg_match('/boundary=(.*)$/', $_SERVER['CONTENT_TYPE'], $matches);
$boundary = $matches[1];</code>
登入後複製

分割數據

將原始資料分成由邊界分隔的各個區塊:

<code class="php">$a_blocks = preg_split("/-+$boundary/", $input);
array_pop($a_blocks);</code>
登入後複製

迭代區塊

循環遍歷每個區塊並解析其內容:

<code class="php">foreach ($a_blocks as $id => $block)
{
    // Check if the block contains uploaded files
    if (strpos($block, 'application/octet-stream') !== FALSE)
    {
        // Extract file metadata using regex
        preg_match('/name=\&quot;([^\&quot;]*)\&quot;.*stream[\n|\r]+([^\n\r].*)?$/s', $block, $matches);
    }
    // Parse other form fields
    else
    {
        // Extract form field name and value using regex
        preg_match('/name=\&quot;([^\&quot;]*)\&quot;[\n|\r]+([^\n\r].*)?\r$/s', $block, $matches);
    }
    $a_data[$matches[1]] = $matches[2];
}</code>
登入後複製

現在可以從$a_data 陣列存取解析的資料。這種自訂解析方法可讓您在 PHP 中處理原始 multipart/form-data 數據,這對於涉及 PUT 請求的場景特別有用。

以上是如何在 PHP 中手動解析 PUT 請求的多部分/表單資料資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板