downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

http_parse_params> <http_parse_headers
[edit] Last updated: Fri, 07 Jun 2013

view this page in

http_parse_message

(PECL pecl_http >= 0.12.0)

http_parse_messageAnalizar mensajes HTTP

Descripción

object http_parse_message ( string $message )

Analiza el mensaje (parámetro message) y devuelve una estructura de tipo object simple recursivo.

Parámetros

message

string que contiene un único mensaje HTTP, y varios mensajes HTTP consecutivos

Valores devueltos

Devuelve una estructura de tipo object jerárquica de los mensajes analizados.

Ejemplos

Ejemplo #1 Uso de http_parse_message()

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

El resultado del ejemplo sería algo similar a:

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] => ...
  )
)

Ver también



add a note add a note User Contributed Notes http_parse_message - [1 notes]
up
0
Ariel
3 months ago
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;
  }
?>

 
show source | credits | sitemap | contact | advertising | mirror sites