Я использую это, чтобы захватить XML-канал и HTTP-заголовки
// Initiate the curl session $ch = curl_init(); // Set the URL curl_setopt($ch, CURLOPT_URL, $url); // Allow the headers curl_setopt($ch, CURLOPT_HEADER, true); // Return the output instead of displaying it directly curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Execute the curl session $output = curl_exec($ch); // Close the curl session curl_close($ch); // Cache feed file_put_contents($filename, $output); // XML to object $output = simplexml_load_string($output); // Return the output as an array return $output;
И он возвращает эти заголовки
HTTP/1.1 200 OK Cache-Control: public, max-age=30 Content-Length: 5678 Content-Type: text/xml Expires: Tue, 22 Nov 2011 15:12:16 GMT Last-Modified: Tue, 22 Nov 2011 15:11:46 GMT Vary: * Server: Microsoft-IIS/7.0 Set-Cookie: ASP.NET_SessionId=1pfijrmsqndn5ws3124csmhe; path=/; HttpOnly Data-Last-Updated: 11/22/2011 15:11:45 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Tue, 22 Nov 2011 15:11:46 GMT
Я хочу, чтобы он возвращал одну часть HTTP-заголовка, которая
Expires: Tue, 22 Nov 2011 15:12:16 GMT
и сохранить это переменной, как мне это сделать? Я просматривал руководство по PHP, но не могу его обработать
preg_match('~^(Expires:.+?)$~ism', $headers, $result); return $result[1];
Вы можете использовать функцию get_headers PHP ($ url, 1), которая возвращает всю информацию заголовка в массиве, и если вы установите второй необязательный параметр равным 1 (ненулевое), то он анализирует его в ассоциативный массив, например:
array( [...] => ..., [Expires] => 'what you need', [...] => ... )