Библиотека PEAR выполняет перенаправления HTTP, поскольку они объявлены в заголовке запроса.Пример, который вы показываете в своем вопросе, - это мета-обновление HTML - другой механизм.
Вам нужно будет прочитать ответ на HTTP-запрос, сделанный через PEAR, и проанализировать тег «meta refresh»,затем сделайте второй запрос к URI, который вам удалось вычистить из первого запроса.
Ниже приведен пример функции, которая сделает это из комментария, оставленного в руководстве по PHP.
function getUrlContents($url, $maximumRedirections = null, $currentRedirection = 0)
{
$result = false;
$contents = @file_get_contents($url);
// Check if we need to go somewhere else
if (isset($contents) && is_string($contents))
{
preg_match_all('/<[\s]*meta[\s]*http-equiv="?REFRESH"?' . '[\s]*content="?[0-9]*;[\s]*URL[\s]*=[\s]*([^>"]*)"?' . '[\s]*[\/]?[\s]*>/si', $contents, $match);
if (isset($match) && is_array($match) && count($match) == 2 && count($match[1]) == 1)
{
if (!isset($maximumRedirections) || $currentRedirection < $maximumRedirections)
{
return getUrlContents($match[1][0], $maximumRedirections, ++$currentRedirection);
}
$result = false;
}
else
{
$result = $contents;
}
}
return $contents;
}
Этот фрагмент был найден здесь: http://php.net/manual/en/function.get-meta-tags.php
Как я объяснил, вы можете сделать что-то вроде следующего:
//get the url from the meta redirect tag
$url = getUrlContents($site1);
//set up the new request in PEAR
$request = new HTTP_Request2($url, HTTP_Request2::METHOD_GET);
Возможно, вы захотите повторно реализовать getURLContentsФункция так, чтобы он использовал PEAR для получения первого URL, если это ваш предпочтительный метод для выполнения HTTP-вызовов.