Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menghuraikan Data Berbilang Bahagian/Borang-Data Mentah Secara Manual dengan PHP untuk Permintaan PUT?

Bagaimana untuk Menghuraikan Data Berbilang Bahagian/Borang-Data Mentah Secara Manual dengan PHP untuk Permintaan PUT?

Barbara Streisand
Lepaskan: 2024-10-29 03:03:02
asal
585 orang telah melayarinya

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

Menghuraikan Data Mentah Berbilang Bahagian/Borang-Data Secara Manual dengan PHP

Menghuraikan data permintaan HTTP mentah yang diformatkan dalam berbilang bahagian/data-bentuk boleh menjadi mencabar apabila berurusan dengan permintaan PUT dalam PHP. Berikut memberikan penjelasan terperinci dan penyelesaian penghuraian tersuai:

Latar Belakang

Secara lalai, PHP menghuraikan data permintaan POST secara automatik jika diformatkan dengan betul. Walau bagaimanapun, permintaan PUT memerlukan penghuraian manual data mentah. Format berbilang bahagian/data bentuk menstruktur data ke dalam blok yang dipisahkan oleh sempadan.

Fungsi Penghuraian Manual

Fungsi berikut menghuraikan data permintaan HTTP mentah secara manual:

<code class="php">function parse_raw_http_request(array &$a_data)
{
  // Read incoming data
  $input = file_get_contents('php://input');

  // Extract boundary from content type header
  preg_match('/boundary=(.*)$/', $_SERVER['CONTENT_TYPE'], $matches);
  $boundary = $matches[1];

  // Split data by boundary
  $a_blocks = preg_split("/-$boundary/", $input);
  array_pop($a_blocks);

  // Loop through data blocks
  foreach ($a_blocks as $id => $block)
  {
    // Skip empty blocks
    if (empty($block))
      continue;

    // Parse uploaded files
    if (strpos($block, 'application/octet-stream') !== FALSE)
    {
      // Extract name and file contents
      preg_match('/name=\&quot;([^\&quot;]*)\&quot;.*stream[\n|\r]+([^\n\r].*)?$/s', $block, $matches);
    }
    // Parse other fields
    else
    {
      // Extract name and value
      preg_match('/name=\&quot;([^\&quot;]*)\&quot;[\n|\r]+([^\n\r].*)?\r$/s', $block, $matches);
    }

    // Add data to array
    $a_data[$matches[1]] = $matches[2];
  }  
}</code>
Salin selepas log masuk

Penggunaan:

Panggil fungsi dan hantar tatasusunan data dengan rujukan:

<code class="php">$a_data = array();
parse_raw_http_request($a_data);
var_dump($a_data);</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Data Berbilang Bahagian/Borang-Data Mentah Secara Manual dengan PHP untuk Permintaan PUT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan