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

Bagaimana untuk Menghuraikan Data Berbilang Bahagian/Borang Mentah Secara Manual dalam PHP?

DDD
Lepaskan: 2024-11-02 18:39:03
asal
203 orang telah melayarinya

How to Manually Parse Raw Multipart/Form-Data Data in PHP?

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

Apabila memproses data daripada permintaan HTTP PUT dengan format data berbilang bahagian/bentuk, PHP tidak menghuraikan data mentah secara automatik. Akibatnya, pembangun mungkin menghadapi cabaran dalam mengekstrak maklumat daripada permintaan sedemikian.

Penyelesaian:

  1. Baca Data Permintaan Mentah:

    • Gunakan file_get_contents('php://input') untuk membaca data mentah.
  2. Ekstrak Sempadan daripada Jenis Kandungan Pengepala:

    • Gunakan ungkapan biasa untuk menangkap nilai sempadan daripada pengepala Jenis Kandungan ($_SERVER['CONTENT_TYPE']).
  3. Pisah Data Mengikut Sempadan:

    • Pisah data mentah kepada blok individu menggunakan preg_split("- $boundary").
  4. Asingkan Blok ke dalam Medan Individu:

    • Untuk setiap blok:

      • Dimuat naik Fail:

        • Cari blok yang mengandungi strim aplikasi/oktet dan ekstrak nama medan dan nama fail.
      • Lain-lain Medan:

        • Ekstrak nama medan dan nilai menggunakan ungkapan biasa.

示例 Kod:

<code class="php">function parse_raw_http_request(array &$a_data)
{
  $input = file_get_contents('php://input');
  preg_match('/boundary=(.*)$/', $_SERVER['CONTENT_TYPE'], $matches);
  $boundary = $matches[1];

  $a_blocks = preg_split("/-+$boundary/", $input);
  array_pop($a_blocks);

  foreach ($a_blocks as $id => $block)
  {
    if (empty($block))
      continue;

    if (strpos($block, 'application/octet-stream') !== FALSE)
    {
      preg_match('/name=\&quot;([^\&quot;]*)\&quot;.*stream[\n|\r]+([^\n\r].*)?$/s', $block, $matches);
    }
    else
    {
      preg_match('/name=\&quot;([^\&quot;]*)\&quot;[\n|\r]+([^\n\r].*)?\r$/s', $block, $matches);
    }
    $a_data[$matches[1]] = $matches[2];
  }
}</code>
Salin selepas log masuk

Penggunaan:

<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 Mentah Secara Manual dalam PHP?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan