PHP DOMDocument - 什么是我的“真实”文档URI?

时间:2010-12-04 12:57:36

标签: php domdocument dom

我正在尝试做一些HTML DOM解析。我正在进行的解析依赖于页面的URI。问题是当我加载HTML文件时,如下所示:

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

我有时会被网站重定向(例如Google可能会将我重定向到特定国家/地区的域名)。问题:

  1. 如何防止被重定向?我想明确说明我要解析的页面 - 而不是发送到另一个页面。我不需要使用DOMDocument。
  2. 如果无法阻止被重定向,是否至少有一种方法可以知道我被发送到的URI是什么?
  3. 编辑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 :(得分:0)

答案在两个方面都是“是”,但没有使用loadHTMLFile()

如果可以,请使用curl。它提供了更加详细的重定向控制。

使用它获取内容,并使用loadHTML()将它们导入DOMDocument。

参见例如