如何使用curl和php进行元重定向?

时间:2015-10-04 23:31:14

标签: php curl

$url='http://wtion';
$headers = array(
    'GET '.$url.' HTTP/1.1',
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3',
  'Accept: text/html',
  'Accept-Language: ru,en-us;',
 'Accept-Charset: windows-1251,utf-8;',
    'Connection: close');

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);//Массив с HTTP заголовками для передачи на сервер
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   //Не выводить ответ в браузер. Пусть функция пишет все в переменную. 
$site=curl_exec($ch);                          //В случае успеха - html тест запрошенной страницы. Иначе - false                         
curl_close($ch);

echo $site;

运行代码后,我得到了这一行

<meta http-equiv='Refresh' content='0; url=/animation.php'>

如何关注重定向并获得/animation.php的响应?

2 个答案:

答案 0 :(得分:1)

Curl无法遵循元刷新。使用DOMXml解析卷曲响应,只要它有效,您可以检查刷新返回,然后适当地处理刷新路径。

$url='http://wtion';
$headers = array(
    'GET '.$url.' HTTP/1.1',
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3',
  'Accept: text/html',
  'Accept-Language: ru,en-us;',
 'Accept-Charset: windows-1251,utf-8;',
    'Connection: close');

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);//Массив с HTTP заголовками для передачи на сервер
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   //Не выводить ответ в браузер. Пусть функция пишет все в переменную. 
$site=curl_exec($ch);                          //В случае успеха - html тест запрошенной страницы. Иначе - false                         
curl_close($ch);

$xml = simplexml_load_file($site);
$result = $xml->xpath("//meta[@http-equiv='refresh']");

if (!empty($result)) {
    ... do stuff to get the final $site value....
}

echo $site

答案 1 :(得分:0)

我在get_meta_tags()文档页面的评论中找到了一个实现。

ICollection<string>