【发布时间】:2012-11-05 20:27:15
【问题描述】:
据我了解,loadHTML 默认加载拉丁语 1 的内容,我想将其转换为 UTF-8 字符。代码如下:
// get data from website
function get_url_contents($url){
$crl = curl_init();
$timeout = 5;
curl_setopt ($crl, CURLOPT_ENCODING, 'UTF-8');
curl_setopt ($crl, CURLOPT_URL,$url);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
// Now here is the domdoc
function get_all_meta_tags($html){
$html = get_url_contents($html);
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->encoding = 'UTF-8';
$nodes = $doc->getElementsByTagName('title');
$title = $nodes->item(0)->nodeValue;
$arr['title']=$title;
$nodes = $doc->getElementsByTagName('h1');
$h1 = $nodes->item(0)->nodeValue;
$arr['h1']=$h1;
$metas = $doc->getElementsByTagName('meta');
for ($i = 0; $i < $metas->length; $i++)
{
$mt = $metas->item($i);
if($mt->getAttribute('name')=='description')
$dec=$mt->getAttribute('content');$arr['description']=$dec;
if($mt->getAttribute('name')=='keywords')
$key=$mt->getAttribute('content');$arr['keywords']=$key;
}
return $arr;
}
现在你可以看到我从网页中抓取数据,问题是这个词没有转换成 UTF-8。例如“Az utolsó dal”需要蜜蜂“Az utolsó dal”。有人可以指导我解决问题或解决方案吗?
【问题讨论】:
-
该代码无法运行。您根本没有将网站的内容加载到 DOMDocument 中。顺便说一句,这里不需要使用 cURL,因为 DOMDocument 有一个
loadHTMLFile方法。 -
在@Gordon 写的内容旁边,您使用
CURLOPT_ENCODING完全错误(到目前为止,现有的“答案”都没有涵盖这一点)。多注意你所做的事情。你需要做一些不同的事情来检查你从 curl 返回的 HTML 的编码。 get curl respone encoding