WP_Http::chunkTransferDecode( string $body )

Decodes chunk transfer-encoding, based off the HTTP 1.1 specification.


Description

Based off the HTTP http_encoding_dechunk function.


Parameters

$body

(string) (Required) Body content


Return

(string) Chunked decoded body on success or raw body on failure.


Source

File: wp-includes/class-http.php

	public static function chunkTransferDecode( $body ) {
		// 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;
		}
	}


Changelog

Changelog
Version Description
WP-2.7.0 Introduced.