解析HTTP状态代码

Bri*_*ian 10 php header http http-status-codes

我使用PHP来解析HTTP状态代码响应的数字部分.鉴于标准的"HTTP/1.1 200 OK"响应,我会使用:

$data = explode(' ', "HTTP/1.1 200 OK");
$code = $data[1];
Run Code Online (Sandbox Code Playgroud)

我不是HTTP的专家.我是否会遇到代码不在$ data [1]位置的响应,如上例所示?我只想确保这种分隔响应代码的方法始终适用于任何响应.

谢谢,Brian

caf*_*caf 15

如有疑问,请查看规格.对于HTTP/1.1,这种情况下的规范是RFC2616.在6.1节中,它描述了状态行,它是响应的第一个组成部分,如下所示:

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
Run Code Online (Sandbox Code Playgroud)

也就是说 - 单个ASCII空间(SP)必须将HTTP版本状态代码分开- 如果检查HTTP版本的定义(在3.1节中),它不能包含空格,也不能包含状态代码.

所以你很高兴能够使用该代码.


Dav*_*d Z 6

不,您永远不会遇到具有不同格式的响应(如果它是正确的HTTP响应).请参阅HTTP RFC(2616).


Rag*_*geZ 6

不,如果网络服务器尊重标准进行爆炸并缓存数组的第二项是好的

如果你真的想确定使用正则表达式

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

干杯