WP_Http::chunkTransferDecode() public WP 2.7.0
Decodes chunk transfer-encoding, based off the HTTP 1.1 specification.
Based off the HTTP http_encoding_dechunk function.
{} Это метод класса: WP_Http{}
Хуков нет.
Возвращает
Строку
. Chunked decoded body on success or raw body on failure.
Использование
$result = WP_Http::chunkTransferDecode( $body ) // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid;
- $body(строка) (обязательный)
- Body content.
Список изменений
С версии 2.7.0 | Введена. |
Код WP_Http::chunkTransferDecode() WP Http::chunkTransferDecode WP 5.7
public static function chunkTransferDecode( $body ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
// The body is not chunked encoded or is malformed.
if ( ! preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', trim( $body ) ) ) {
return $body;
}
$parsed_body = '';
// We'll be altering $body, so need a backup in case of error.
$body_original = $body;
while ( true ) {
$has_chunk = (bool) preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', $body, $match );
if ( ! $has_chunk || empty( $match[1] ) ) {
return $body_original;
}
$length = hexdec( $match[1] );
$chunk_length = strlen( $match[0] );
// Parse out the chunk of data.
$parsed_body .= substr( $body, $chunk_length, $length );
// Remove the chunk from the raw data.
$body = substr( $body, $length + $chunk_length );
// End of the document.
if ( '0' === trim( $body ) ) {
return $parsed_body;
}
}
}