PHP で生のマルチパート/フォーム データ データを手動で解析する
マルチパート/フォーム データ形式の HTTP PUT リクエストからのデータを処理する場合、 PHP は生データを自動的に解析しません。その結果、開発者は、そのようなリクエストから情報を抽出する際に課題に直面する可能性があります。
解決策:
生のリクエスト データの読み取り:
コンテンツ タイプから境界を抽出するヘッダー:
境界によるデータの分割:
ブロックを個別のフィールドに分離:
ブロックごと:
アップロード済みファイル:
その他フィールド:
コード例:
<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=\"([^\"]*)\".*stream[\n|\r]+([^\n\r].*)?$/s', $block, $matches); } else { preg_match('/name=\"([^\"]*)\"[\n|\r]+([^\n\r].*)?\r$/s', $block, $matches); } $a_data[$matches[1]] = $matches[2]; } }</code>
使用法:
<code class="php">$a_data = array(); parse_raw_http_request($a_data); var_dump($a_data);</code>
以上がPHP で生のマルチパート/フォームデータ データを手動で解析する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。