从数组循环返回值并匹配关键字(php)

时间:2015-05-08 14:34:34

标签: php

我有一个看起来像这样的数组$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";
}

2 个答案:

答案 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