Decode HTTP Chunked Transfer
2007-09-14OK, mal wieder gab es ein Problem, welches irgendwie keine im Internet auffindbare Lösung hatte. Ich habe mit PHP einen ‘chunked’-http-body auswerten müssen und der sieht dann in etwa so aus:
12
Dies ist ein Test!
5
Blöd!
0
Jetzt galt es also eine kleine Funktion zu schreiben, welche mir das ganze in folgendes umwandelt:
Dies ist ein Test!Blöd!
Also erstmal geschaut was die Zahlen bedeuten. Sind natürlich hex-Werte mit der Länge des folgenden Chunks. Und am Ende kommt eine 0. Also folgende Funktion tut genau das!
function decode_chunked($string) {
$lines = explode("\r\n",$string);
$i=0;
$length = 999;
$content = '';
foreach($lines as $line) {
$i++;
if ($i%2 == 1) {
$length = hexdec($line);
} elseif ($length == strlen($line)) {
$content .= $line;
}
if ($length == 0)
break;
}
return $content;
}













Antworten
Habe derzeit genau daselbe Problem festgestellt. Wußte nicht wo die Sonderzeichen mitten im HTML-Code herkam. Jetzt weiß ichs.
Cool, vielen Dank!
Super Function, hatte das Problem auch sehr lange. Damit wird endlich alles gut.
Kommentieren