当我想获得远程网站的标题时,我使用这个脚本:
function get_remotetitle($urlpage) {
$file = @fopen(($urlpage),"r");
$text = fread($file,16384);
if (preg_match('/<title>(.*?)<\/title>/is',$text,$found)) {
$title = $found[1];
} else {
$title = 'Title N/A';
}
return $title;
}
但是当我用重音标记一个网站标题时,我得到“ ”。但如果我查看PHPMyAdmin,我会正确地看到重音符号。发生了什么事?
答案 0 :(得分:0)
问题是文本的编码与您在显示它的页面上使用的编码不同。
您要做的是找出数据的编码方式(例如,通过查看文本所使用的页面的编码方式)并将其转换为您自己使用的编码。
要进行实际转换,您可以使用iconv(针对一般情况),utf8_decode(UTF8 - &gt; ISO-8859-1),utf8_encode(ISO-8859) -1 - &gt; UTF8)或mb_convert_encoding。
为了帮助您了解源页面的编码,您可以通过w3c Validator将网站放在自动检测编码的位置。
如果想要一种自动方式来确定编码,则必须查看HTML本身。您可以在HTML 4 specification中找到确定所选字符集的方法。
此外,有关编码的更多信息,请查看The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)。
答案 1 :(得分:0)
这很可能是字符编码问题。您可能正确地获取了该字符,但显示它的页面具有错误的字符编码,因此它无法正确显示。
答案 2 :(得分:0)
试试这个:
echo iconv('UTF-8', 'ASCII//TRANSLIT', $title);
答案 3 :(得分:0)
使用类似的东西:
$html = file_get_html('http://www.google.com/');
$ret = $html->find('title', 0);
答案 4 :(得分:0)
我解决了。我添加了htmlentities($text)
,现在显示重音等等。