我只想知道是否可以从html文件中提取编码的内容(utf-8格式),而不需要编码头。
我的具体案例是这个网站:
http://www.metal-archives.com/band/discography/id/203/tab/all
我想提取所有信息,但正如你所见,这个词看起来很糟糕:
莫特拉德
我试着使用file_get_html,htmlenties,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是“简单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;
}
最佳答案
url的内容类型
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
关于php - 获取不带标题/编码的外部网页的html源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13308252/