我有一个看起来像这样的数组$headers
,我只想提取服务器名称。问题是数据并不总是在同一个顺序,所以我需要搜索" Server"并返回其价值。我想我需要使用循环,但无法弄清楚如何合并搜索。
数组$ headers
的示例array(13) {
[0]=>
string(15) "HTTP/1.1 200 OK"
[1]=>
string(19) "Server: nginx/1.6.2"
[2]=>
string(35) "Date: Fri, 08 May 2015 14:27:28 GMT"
[3]=>
string(38) "Content-Type: text/html; charset=utf-8"
[4]=>
string(17) "Connection: close"
[5]=>
string(25) "X-Powered-By: PHP/5.6.7-1"
[6]=>
string(44) "Last-Modified: Fri, 08 May 2015 14:20:12 GMT"
}
我想提取服务器名称 nginx / 1.6.2
这是我需要构建的循环
foreach ($headers as $value) {
echo "$value\n";
}
答案 0 :(得分:3)
假设只有一个Server
标题:
$result = current(preg_grep('/^Server:/', $headers));
您还可以查看http_parse_headers(),但它需要原始标头而不是数组。如果您没有原始标题,您仍然可以使用它:
$result = http_parse_headers(implode("\r\n", $headers))['Server'];
答案 1 :(得分:1)
$a = [
"HTTP/1.1 200 OK",
"Server: nginx/1.6.2",
"Date: Fri, 08 May 2015 14:27:28 GMT",
"Content-Type: text/html; charset=utf-8",
"Connection: close",
"X-Powered-By: PHP/5.6.7-1",
"Last-Modified: Fri, 08 May 2015 14:20:12 GMT"
];
preg_match('/^Server: (.*)$/m', implode(PHP_EOL, $a), $matches);
echo $matches[1], PHP_EOL;
输出:
nginx/1.6.2