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
523 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!

sumber:php.cn
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