从stream_Get_meta_data数组获取标头状态代码



函数stream_get_meta_data以数组形式返回标头,如下所示:

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

我可以用$meta['wrapper_data'][0]获取状态,但我如何从值中获取状态代码,该值将是HTTP/1.1 200 OK,因为用HTTP/1.1爆炸是个坏主意?使用regexp获取代码的唯一方法是什么?如果绝对是,regexp如何获得仅以1,2,3,4,5开头的3位数字?

使用explode()似乎是个好主意,因为标准情况下响应的格式总是这样。

但是您也可以使用一个简单的正则表达式来提取:

/[12345]dd/

由于HTTP包装器默认遵循重定向,并且会将多个HTTP响应附加到wrapper_data数组中,所以您都需要一个更严格的regexp,它不会在所有类型的头上触发,并遍历所有行。我建议不要忽略从6-9开始的状态,因为没有办法知道HTTP在未来会如何发展。试试这个:

$result = array();
foreach ($responsemeta['wrapper_data'] as $headerline) {
    if (preg_match('/^HTTP/(d+.d+)s+(d+)s*(.+)?$/', $headerline, $result)) {
        $http_version = $result[1];
        $http_statuscode = $result[2];
        $http_statusstring = $result[3];
    }
}

相关内容

  • 没有找到相关文章

最新更新