Moin!
Ich öffne mit fsockopen() eine HTTP-Verbindung und bekomme eine Antwort mit einem Header und einem Body mit binären Daten(gzip). Trennen kann ich header und body ja einfach mit:
print_r(explode("\r\n\r\n",$result));
Aber ist das auch sicher? Zum einen, wird das auf jedem Server mit \r\n\r\n umgebrochen?
Ja, das steht so im HTTP-Standard: Der Body eines HTTP-Responses beginnt nach einer Leerzeile.
Du solltest bedenken, dass eine Leerzeile durchaus auch durch "\n\n" realisiert werden kann - ich schreibe in meinen alten Perl-Skripten jedenfalls immer
print "Content-type: text/html\n\n";
um den HTTP-Header auszugeben und danach mit dem Body weiterzumachen. Insofern solltest du dich nicht auf "\r\n" als einziges Zeilentrennzeichen versteifen.
Außerdem solltest du sicherstellen, dass du nur das _erste_ Auftreten einer Leerzeile als Trennzeichen erkannt wird, denn sonst trennst du, wie du schon selbst erkannt hast, Teile ab, die nicht abgetrennt werden dürfen.
- Sven Rautenberg