http_parse_message

(PECL pecl_http:0.12.0-1.5.5)

http_parse_message — Parse 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.

Примеры

Пример #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] => ...
  )
)

Смотрите также

Коментарии

Автор:
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;
  }
?>
2013-02-27 21:40:20
http://php5.kiev.ua/manual/ru/function.http-parse-message.html

    Поддержать сайт на родительском проекте КГБ