获取没有标题/编码的外部网页的html源代码

时间:2012-11-09 12:38:51

标签: php html character-encoding

我只是想知道是否可以从html文件中提取编码的内容(在utf-8中),而不需要编码标题。

我的具体案例是这个网站:

http://www.metal-archives.com/band/discography/id/203/tab/all

我想提取所有信息,但正如您所看到的,例如,这个词看起来很糟糕:

  

Motörhead

我尝试使用file_get_html,htmlentities,utf_decode,utf_encode以及它们与不同选项的混合,但我找不到解决方案......

编辑:

我只想通过这个简单的代码看到格式正确的同一个网站:

$html_discos = file_get_html("http://www.metal-archives.com/band/discography/id/223/tab/all");
//some transform/decode here
print_r($html_discos);

我希望字符串或DOM对象中的内容格式正确,以便稍后获取部分内容。

编辑2:

$ file_get_html是“simple html dom”库的函数:

http://simplehtmldom.sourceforge.net/

有这段代码:

function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
{
    // We DO force the tags to be terminated.
    $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText);
    // For sourceforge users: uncomment the next line and comment the retreive_url_contents line 2 lines down if it is not already done.
    $contents = file_get_contents($url, $use_include_path, $context, $offset);
    // Paperg - use our own mechanism for getting the contents as we want to control the timeout.
    //$contents = retrieve_url_contents($url);
    if (empty($contents) || strlen($contents) > MAX_FILE_SIZE)
    {
        return false;
    }
    // The second parameter can force the selectors to all be lowercase.
    $dom->load($contents, $lowercase, $stripRN);
    return $dom;
}

3 个答案:

答案 0 :(得分:2)

网址的内容类型

http://www.metal-archives.com/band/discography/id/203/tab/all

是:

Content-Type: text/html

这将默认为ISO-8859-1。但相反,你想使用UTF-8。更改内容类型,以便正确发出信号:

Content-Type: text/html; charset=utf-8

请参阅:Setting the HTTP charset parameter

答案 1 :(得分:1)

header('Content-Type: text/html; charset=utf-8');
echo file_get_contents('http://www.metal-archives.com/band/discography/id/203/tab/all');

只要以UTF-8的形式发布,原始数据就能正常工作。

答案 2 :(得分:0)

尝试使用html_eneity_decode http://php.net/manual/en/function.html-entity-decode.php(该页面的来源有编码字符)