PHP DOMDocument - каков мой "настоящий" URI документа? - PullRequest
1 голос
/ 04 декабря 2010

Я пытаюсь выполнить анализ HTML DOM. Анализ, который я делаю, зависит от URI страницы. Проблема в том, что когда я загружаю файл HTML, как показано ниже:

// Creat HTML DOM
$dom_document = new DOMDocument();
@$dom_document->loadHTMLFile('http://www.google.com/');

Иногда сайт перенаправляет меня (например, Google может перенаправить меня на домен определенной страны). Вопросы:

  1. Как предотвратить перенаправление? Я хочу явно указать, какую страницу я хочу проанализировать, а не отправлять на другую страницу. Мне не нужно использовать DOMDocument.
  2. Если нет способа предотвратить перенаправление, есть ли хотя бы способ узнать, на какой URI я был отправлен?

РЕДАКТИРОВАТЬ 1:

function get_html_content($url)
        {
            $ch      = curl_init();

            curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE); // not good for 301 redirects
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($ch, CURLOPT_URL, $url);

            $data = curl_exec($ch);

            // Check if any error occured
            if(curl_errno($ch))
            {
                echo 'Curl error: ' . curl_error($ch);
                assert(FALSE);
                die();
            }

            curl_close($ch);

            return $data;
        }

1 Ответ

0 голосов
/ 04 декабря 2010

Ответ "да" в обоих случаях, но не с использованием loadHTMLFile().

Если можете, используйте curl.Он обеспечивает гораздо более подробный контроль над перенаправлениями.

Получите содержимое вместе с ним и импортируйте их в свой DOMDocument, используя loadHTML().

См. Например

...