Ayrıştırma HTTP durum kodu

4 Cevap php

Ben HTTP durum kodu yanıtı sayısal kısmını ayrıştırmak için PHP kullanıyorum. Standart bir "HTTP/1.1 200 OK" yanıtı alındığında, ben kullanmak istiyorum:

$data = explode(' ', "HTTP/1.1 200 OK");
$code = $data[1];

Ben HTTP bir uzman değilim. Şimdiye kadar kod yukarıdaki örnekte olduğu gibi $ verilerin konumunda [1] olmayan bir tepki karşılaşma misiniz? Ben sadece cevap kodunu sınırlayan bu yöntem her zaman yanıtı için çalışacağından emin olmak istiyorum.

Teşekkürler, Brian

4 Cevap

Şüphe, spec kontrol ettiğinizde. Bu durumda spec, HTTP/1.1 için, bir RFC2616. , Section 6.1, bu Status-Line açıklayan bir Response, olduğu gibi ilk bileşen:

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Yani - bir tek ASCII boşluk (SP) ayırmak gerekir HTTP-Version ve Status-Code - ve tanımı kontrol eğer HTTP-Version (in Section 3.1), bir boşluk içeremez ve ne can Status-Code.

Yani bu kod ile gitmek iyidir.

Farklı bir biçimi vardır (uygun bir HTTP yanıtı ise) Hayır, sen bir yanıt karşılaşmak asla. HTTP RFC (2616) bakın.

Webserver bir patlayabilir yapıyor ve dizinin ikinci öğe önbelleğe standartlara saygı varsa yok gayet

Eğer gerçekten düzenli ifade emin kullanımı olmak istiyorsa

yani

preg_match('|HTTP/\d\.\d\s+(\d+)\s+.*|',$subject,$match);
var_dump($match[1]);

Şerefe

İstediğiniz tüm sayısal eğer olursa, ne yapıyorsun Tamam. Ancak siz de mesajı istiyorsanız, yani, o çok bölme bitireceğiz.

HTTP/1.1 404 Not Found