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=\"([^\"]*)\".*stream[\n|\r]+([^\n\r].*)?$/s', $block, $matches); } // Parse other fields else { // Extract name and value preg_match('/name=\"([^\"]*)\"[\n|\r]+([^\n\r].*)?\r$/s', $block, $matches); } // Add data to array $a_data[$matches[1]] = $matches[2]; } }</code>
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>
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!