HTTP 函数
在线手册:中文  英文

http_parse_message

(PECL pecl_http >= 0.12.0)

http_parse_messageParse HTTP messages

说明

object http_parse_message ( string $message )

Parses the HTTP message into a simple recursive object.

参数

message

string containing a single HTTP message or several consecutive HTTP messages

返回值

Returns a hierarchical object structure of the parsed messages.

范例

Example #1 Using http_parse_message()

<?php
define 
('URL''http://www.example.com/');
print_r(http_parse_message(http_get(URL, array('redirect' => 3))));
?>

以上例程的输出类似于:

stdClass object
(
  [type] => 2
  [httpVersion] => 1.1
  [responseCode] => 200
  [headers] => Array 
  (
    [Content-Length] => 3
    [Server] => Apache
  )
  [body] => Hi!
  [parentMessage] => stdClass object
  (
    [type] => 2
    [httpVersion] => 1.1
    [responseCode] => 302
    [headers] => Array 
    (
      [Content-Length] => 0
      [Location] => ...
    )
    [body] => 
    [parentMessage] => ...
  )
)

参见


HTTP 函数
在线手册:中文  英文

用户评论:

Ariel (2013-02-27 19:40:20)

A nice PHP alternative, might need work, but works for me and can be an entry point for someone else. It doesn't do exactly the same as this function, but it rather parses all headers and extracts the HTTP and Content response on it's own array element.

<?php
  
function http_parse_response($header) {
      
$retVal = array();
      
$fields explode("\r\n"preg_replace('/\x0D\x0A[\x09\x20]+/'' '$header));
      foreach (
$fields as $field) {

        
// Do not process empty cubrid_num_fields(result)
        
if (empty($field)) {
          continue;
        }

        if (
preg_match('/([^:]+): (.+)/m'$field$match)) {
          
$match[1] = preg_replace('/(?<=^|[\x09\x20\x2D])./e''strtoupper("\0")'strtolower(trim($match[1])));
          if( isset(
$retVal[$match[1]]) ) {
            if (!
is_array($retVal[$match[1]])) {
              
$retVal[$match[1]] = array($retVal[$match[1]]);
            }
            
$retVal[$match[1]][] = $match[2];
          }
          else {
            
$retVal[$match[1]] = trim($match[2]);
          }
        }
        else {
          if (
preg_match('/HTTP\//'$field)) {
            
// Following HTTP standards which are space-separated
            
preg_match('/(.*?) (.*?) (.*)/'$field$matches);
            
$retVal['HTTP']['version'] = $matches[1];
            
$retVal['HTTP']['code'] = $matches[2];
            
$retVal['HTTP']['reason'] = $matches[3];
          }
          else {
            
$retVal['Content'][] = $field;
          }
        }
      }
      return 
$retVal;
  }
?>

易百教程