protected function parseHeaders(array $headers)
	{
		$this->headers = array();

		// find and set the HTTP status code and reason
		$firstHeader = array_shift($headers);
		if (!preg_match('/^HTTP\/\d(\.\d)? [0-9]{3}/', $firstHeader)) {
			throw new \InvalidArgumentException('Invalid response header');
		}
		list(, $status) = explode(' ', $firstHeader, 2);
		$code = explode(' ', $status);
		$code = (int) $code[0];

		// special handling for HTTP 100 responses
		if ($code === 100) {
			// remove empty header lines between 100 and actual HTTP status
			foreach ($headers as $key => $header) {
				if ($header) {
					break;
				}
				unset($headers[$key]);
			}

			// start the process over with the 100 continue header stripped away
			return $this->parseHeaders($headers);
		}

		$this->statusText = $status;
		$this->statusCode = $code;

		foreach ($headers as $header) {
			// skip empty lines
			if (!$header) {
				continue;
			}

			$delimiter = strpos($header, ':');
			if (!$delimiter) {
				continue;
			}

			$key = trim(strtolower(substr($header, 0, $delimiter)));
			$val = ltrim(substr($header, $delimiter + 1));

			if (isset($this->headers[$key])) {
				if (is_array($this->headers[$key])) {
					$this->headers[$key][] = $val;
				} else {
					$this->headers[$key] = array($this->headers[$key], $val);
				}
			} else {
				$this->headers[$key] = $val;
			}
		}
	}
protected function parseHeaders(array $headers)
	{
		$this->headers = array();

		// find and set the HTTP status code and reason
		$firstHeader = array_shift($headers);
		if (!preg_match('/^HTTP\/\d(\.\d)? [0-9]{3}/', $firstHeader)) {
			throw new \InvalidArgumentException('Invalid response header');
		}
		list(, $status) = explode(' ', $firstHeader, 2);
		$code = explode(' ', $status);
		$code = (int) $code[0];

		// special handling for HTTP 100 responses
		if ($code === 100) {
			// remove empty header lines between 100 and actual HTTP status
			foreach ($headers as $key => $header) {
				if ($header) {
					break;
				}
				unset($headers[$key]);
			}

			// start the process over with the 100 continue header stripped away
			return $this->parseHeaders($headers);
		}

		$this->statusText = $status;
		$this->statusCode = $code;

		foreach ($headers as $header) {
			// skip empty lines
			if (!$header) {
				continue;
			}

			$delimiter = strpos($header, ':');
			if (!$delimiter) {
				continue;
			}

			$key = trim(strtolower(substr($header, 0, $delimiter)));
			$val = ltrim(substr($header, $delimiter + 1));

			if (isset($this->headers[$key])) {
				if (is_array($this->headers[$key])) {
					$this->headers[$key][] = $val;
				} else {
					$this->headers[$key] = array($this->headers[$key], $val);
				}
			} else {
				$this->headers[$key] = $val;
			}
		}
	}
protected function parseHeaders ( array $ headers ) { $ this -> headers = array ( ) ; // find and set the HTTP status code and reason $ firstHeader = array_shift ( $ headers ) ; if ( ! preg_match ( '/^HTTP\/\d(\.\d)? [0-9]{3}/' , $ firstHeader ) ) { throw new \ InvalidArgumentException ( 'Invalid response header' ) ; } list ( , $ status ) = explode ( ' ' , $ firstHeader , 2 ) ; $ code = explode ( ' ' , $ status ) ; $ code = ( int ) $ code [ 0 ] ; // special handling for HTTP 100 responses if ( $ code === 100 ) { // remove empty header lines between 100 and actual HTTP status foreach ( $ headers as $ key => $ header ) { if ( $ header ) { break ; } unset ( $ headers [ $ key ] ) ; } // start the process over with the 100 continue header stripped away return $ this -> parseHeaders ( $ headers ) ; } $ this -> statusText = $ status ; $ this -> statusCode = $ code ; foreach ( $ headers as $ header ) { // skip empty lines if ( ! $ header ) { continue ; } $ delimiter = strpos ( $ header , ':' ) ; if ( ! $ delimiter ) { continue ; } $ key = trim ( strtolower ( substr ( $ header , 0 , $ delimiter ) ) ) ; $ val = ltrim ( substr ( $ header , $ delimiter + 1 ) ) ; if ( isset ( $ this -> headers [ $ key ] ) ) { if ( is_array ( $ this -> headers [ $ key ] ) ) { $ this -> headers [ $ key ] [ ] = $ val ; } else { $ this -> headers [ $ key ] = array ( $ this -> headers [ $ key ] , $ val ) ; } } else { $ this -> headers [ $ key ] = $ val ; } } }
Parse an array of headers.

@param  array  $headers

@return void
Parse an array of headers .