<?php
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.google.com/");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// grab URL and pass it to the browser
$result = curl_exec($ch);
/* Curl returns multiple headers, if the last action required multiple
* requests, e.g. when doing Digest authentication. Only parse the
* headers of the latest response. */
preg_match_all('/(^|\r\n\r\n)(HTTP\/)/', $result, $matches, PREG_OFFSET_CAPTURE);
$startOfHeaders = $matches[2][count($matches[2]) - 1][1];
$endOfHeaders = strpos($result, "\r\n\r\n", $startOfHeaders);
$headers = substr($result, $startOfHeaders, $endOfHeaders - $startOfHeaders);
$headers = preg_split("/\r?\n/", $headers);
foreach ($headers as $headerLine) {
if (preg_match('|^Server:\s+(.+)|', $headerLine, $m)) {
var_dump($m[1]);
}
}
// close cURL resource, and free up system resources
curl_close($ch);
В основном это выдержка из библиотеки Horde_Http . Конкретно запрос Curl и ответ Curl обработчики.
Это несколько сложнее, чем то, что вы делали с помощью команды "grep", но выглядело так, как будто вы хотите проанализировать заголовки ответа. Вот почему я оставил в коде более сложный анализ заголовков.