WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress
функция не описана

WP_Http::processHeaders() public WP 2.7.0

Transforms header string into an array.

{} Это метод класса: WP_Http{}

Хуков нет.

Возвращает

Массив. Processed string headers. If duplicate headers are encountered, then a numbered array is returned as the value of that header-key.

  • response(массив)

    • code(число)
      The response status code.

    • message(строка)
      The response message.
      По умолчанию: ''
  • newheaders(массив)
    The processed header data as a multidimensional array.

  • cookies(WP_Http_Cookie[])
    If the original headers contain the 'Set-Cookie' key, an array containing WP_Http_Cookie objects is returned.

Использование

$result = WP_Http::processHeaders( $headers, $url ) // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid;
$headers(строка/массив) (обязательный)
The original headers. If a string is passed, it will be converted to an array. If an array is passed, then it is assumed to be raw header data with numeric keys with the headers as the values. No headers must be passed that were already processed.
$url(строка)
The URL that was requested.
По умолчанию: ''

Список изменений

С версии 2.7.0 Введена.

Код WP_Http::processHeaders() WP 5.5.1

<?php
public static function processHeaders( $headers, $url = '' ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
	// Split headers, one per array element.
	if ( is_string( $headers ) ) {
		// Tolerate line terminator: CRLF = LF (RFC 2616 19.3).
		$headers = str_replace( "\r\n", "\n", $headers );
		/*
		 * Unfold folded header fields. LWS = [CRLF] 1*( SP | HT ) <US-ASCII SP, space (32)>,
		 * <US-ASCII HT, horizontal-tab (9)> (RFC 2616 2.2).
		 */
		$headers = preg_replace( '/\n[ \t]/', ' ', $headers );
		// Create the headers array.
		$headers = explode( "\n", $headers );
	}

	$response = array(
		'code'    => 0,
		'message' => '',
	);

	/*
	 * If a redirection has taken place, The headers for each page request may have been passed.
	 * In this case, determine the final HTTP header and parse from there.
	 */
	for ( $i = count( $headers ) - 1; $i >= 0; $i-- ) {
		if ( ! empty( $headers[ $i ] ) && false === strpos( $headers[ $i ], ':' ) ) {
			$headers = array_splice( $headers, $i );
			break;
		}
	}

	$cookies    = array();
	$newheaders = array();
	foreach ( (array) $headers as $tempheader ) {
		if ( empty( $tempheader ) ) {
			continue;
		}

		if ( false === strpos( $tempheader, ':' ) ) {
			$stack   = explode( ' ', $tempheader, 3 );
			$stack[] = '';
			list( , $response['code'], $response['message']) = $stack;
			continue;
		}

		list($key, $value) = explode( ':', $tempheader, 2 );

		$key   = strtolower( $key );
		$value = trim( $value );

		if ( isset( $newheaders[ $key ] ) ) {
			if ( ! is_array( $newheaders[ $key ] ) ) {
				$newheaders[ $key ] = array( $newheaders[ $key ] );
			}
			$newheaders[ $key ][] = $value;
		} else {
			$newheaders[ $key ] = $value;
		}
		if ( 'set-cookie' === $key ) {
			$cookies[] = new WP_Http_Cookie( $value, $url );
		}
	}

	// Cast the Response Code to an int.
	$response['code'] = intval( $response['code'] );

	return array(
		'response' => $response,
		'headers'  => $newheaders,
		'cookies'  => $cookies,
	);
}