Requests::decode_chunked()
最后更新于:2021-11-25 22:56:00
Requests::decode_chunked( string$data)Decoded a chunked body as per RFC 2616
参数
- $data
-
(string) (Required) Chunked body
响应
(string) Decoded body
源文件
文件: gc-includes/class-requests.php
protected static function decode_chunked($data) {
if (!preg_match('/^([0-9a-f]+)(?:;(?:[w-]*)(?:=(?:(?:[w-]*)*|"(?:[^rn])*"))?)*rn/i', trim($data))) {
return $data;
}
$decoded = '';
$encoded = $data;
while (true) {
$is_chunked = (bool) preg_match('/^([0-9a-f]+)(?:;(?:[w-]*)(?:=(?:(?:[w-]*)*|"(?:[^rn])*"))?)*rn/i', $encoded, $matches);
if (!$is_chunked) {
// Looks like it's not chunked after all
return $data;
}
$length = hexdec(trim($matches[1]));
if ($length === 0) {
// Ignore trailer headers
return $decoded;
}
$chunk_length = strlen($matches[0]);
$decoded .= substr($encoded, $chunk_length, $length);
$encoded = substr($encoded, $chunk_length + $length + 2);
if (trim($encoded) === '0' || empty($encoded)) {
return $decoded;
}
}
// We'll never actually get down here
// @codeCoverageIgnoreStart
}