Analyse HTTP_RANGE-header in PHP
Gibt es eine Möglichkeit zu analysieren, die HTTP_RANGE
header korrekt in PHP? Dachte, ich würde hier Fragen, bevor das Rad neu erfinden möchte.
Ich bin derzeit mit
preg_match('/bytes=(\d+)-(\d+)/', $_SERVER['HTTP_RANGE'], $matches);
Parsen der header-aber das deckt nicht alle möglichen Werte der header, so Frage ich mich, ob es eine Funktion gibt oder eine Bibliothek, die dies tun können, jetzt schon?
Vielen Dank im Voraus.
- Ich kenne keine Möglichkeit, dies zu tun, aber ich würde einen Riss an es mit regulären Ausdrücken. Werfen Sie einen Blick auf die Spezifikation, tools.ietf.org/html/draft-ietf-http-range-retrieval-00
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lieber mit regex zu test es vor dem senden einer
416
. Dann einfach analysieren es durch die Explosion auf der Komma,
und der Bindestrich-
. Ich sehe auch, dass Sie verwendet werden\d+
in deinem regex, aber eigentlich sind diese nicht erforderlich. Wenn entweder der Bereich Indizes weggelassen wird, dann bedeutet es nur "first byte" oder "letztes byte". Sie decken sollte, die in Ihrer regex ebenso. Siehe auch die Range-header in der HTTP-spec, wie man eigentlich damit umgehen.Kickoff Beispiel:
Edit: "$start " muss immer kleiner sein als $Ende
bytes=-500
ist eine gültige Anforderung für die letzten 500 bytes einer Datei. Dies macht es ein bisschen komplizierter, Sie zu extrahieren Sie die Palette als nur explodierende auf die-
Charakter.Stammt aus der PEAR HTTP_Download-Paket:
Es ist auch eine gute Idee, diese Pakete für Sachen wie diese!
Es ist ein Ausschnitt der Implementierung der HTTP-range-Unterstützung auf der
fread()
Seite:http://www.php.net/manual/en/function.fread.php#84115