2016-08-02 19 views
0

Die Funktion stream_get_meta_data kehrt als Array wie folgt Header:Get Header-Statuscode von stream_get_meta_data Array

Array 
(
[timed_out] => 
[blocked] => 1 
[eof] => 
[wrapper_data] => Array 
    (
     [0] => HTTP/1.1 200 OK 

ich den Status mit $meta['wrapper_data'][0] bekommen kann, aber wie kann ich den Statuscode aus dem Wert holen, die HTTP/1.1 200 OK wäre wie explodiert von HTTP/1.1 ist eine schlechte Idee? Ist die einzige Möglichkeit, Regexp zu verwenden, um den Code zu erhalten? Wenn ja, wie bekommt der Regexp eine 3-stellige Zahl, die nur mit 1,2,3,4,5 beginnt?

+0

Regulärer Ausdruck für diese sehr einfach ist. '/ [12345] \ d \ d /' – Ahmad

Antwort

1

Die Verwendung von explode() scheint eine gute Idee zu sein, da das Format der Antwort standardmäßig immer so ist.

Aber Sie können einen einfachen Regexp verwenden, um dies zu extrahieren, zu:

/[12345]\d\d/ 
+0

schlechte 'schlechte Idee' Ich meinte, ist es immer HTTP/1.1? Was ist, wenn dies eine andere Version als 1.1 ist? Ich habe gegoogelt und auch diesen Trick gefunden: 'substr ($ headers [0], 9, 3);' ist es ein besserer Weg? oder noch explodieren oder regext ist besser? – user4271704

+0

für welches würdest du wählen? regexp oder substr? – user4271704

+0

@ user4271704: warum fragen? Es ist eine einfache Wahl: Wenn Ihr String aus einem festen Teilstring besteht und Sie wissen, dass dahinter ein Stück fester Breite sein wird, ist 'substr' alles was Sie brauchen. Eine Regex ist notwendig, wenn Sie unbedingt Zeichen des exakten Typs/Klasse/Kategorie einige Male von 0 bis * n * greifen müssen. BTW, um eine 3-stellige Zahl * beginnend * mit 1 oder 2, 3, 4, oder 5, müssen Sie tatsächlich '/ (?