Manuelles Parsen von mehrteiligen/Formulardaten-Rohdaten in PHP für PUT-Anfragen
Beim Arbeiten mit mehrteiligen/Formulardatenanforderungen, insbesondere in Im Kontext von HTTP-PUT-Vorgängen verarbeitet das integrierte Parsing von PHP die Rohdaten möglicherweise nicht automatisch, wie dies bei POST-Anfragen der Fall ist. Um dieses Problem zu lösen, ist eine manuelle Analyse erforderlich.
Abrufen der Rohdaten
Zuerst rufen Sie den rohen HTTP-Anfragetext mit file_get_contents('php://input' ab) ).
Parsen des Content-Type-Headers
Extrahieren Sie die mehrteilige Grenze aus dem Content-Type-Header mithilfe eines regulären Ausdrucks:
<code class="php">preg_match('/boundary=(.*)$/', $_SERVER['CONTENT_TYPE'], $matches); $boundary = $matches[1];</code>
Aufteilen der Daten
Teilen Sie die Rohdaten in einzelne Blöcke auf, die durch die Grenze getrennt sind:
<code class="php">$a_blocks = preg_split("/-+$boundary/", $input); array_pop($a_blocks);</code>
Iterieren über Blöcke
Durchlaufen Sie jeden Block und analysieren Sie seinen Inhalt:
<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=\"([^\"]*)\".*stream[\n|\r]+([^\n\r].*)?$/s', $block, $matches); } // Parse other form fields else { // Extract form field name and value using regex preg_match('/name=\"([^\"]*)\"[\n|\r]+([^\n\r].*)?\r$/s', $block, $matches); } $a_data[$matches[1]] = $matches[2]; }</code>
Auf die analysierten Daten kann jetzt über das Array $a_data zugegriffen werden. Mit dieser benutzerdefinierten Parsing-Methode können Sie rohe Multipart-/Formulardaten in PHP verarbeiten, was besonders nützlich für Szenarien mit PUT-Anfragen ist.
Das obige ist der detaillierte Inhalt vonWie analysiere ich manuell Multipart-/Formulardatendaten für PUT-Anfragen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!