Php 获取页面的字符集并将其转换
在post消息中创建URL预览,如在FB上。 在文本区域中发布url时,此url的预览如下所示。 标题、描述、图像等 不同页面的字符集编码有问题。 我的页面是UTF-8格式,如果预览url不是UTF-8格式,我的页面上会显示不正确的文本。 我需要获取url的字符集,将其转换为utf-8,然后从中获取所需信息并在我的页面上显示 事实上,我把它溢出了),但没有找到一个好的方法来做这件事 最后我这样做了,效果很好。 请你检查一下这是不是正确的短一点的方法Php 获取页面的字符集并将其转换,php,curl,utf-8,character-encoding,Php,Curl,Utf 8,Character Encoding,在post消息中创建URL预览,如在FB上。 在文本区域中发布url时,此url的预览如下所示。 标题、描述、图像等 不同页面的字符集编码有问题。 我的页面是UTF-8格式,如果预览url不是UTF-8格式,我的页面上会显示不正确的文本。 我需要获取url的字符集,将其转换为utf-8,然后从中获取所需信息并在我的页面上显示 事实上,我把它溢出了),但没有找到一个好的方法来做这件事 最后我这样做了,效果很好。 请你检查一下这是不是正确的短一点的方法 $post_url='http://websi
$post_url='http://website.domain';
/// Get headers ////////////////////////////////////////////////////////////
function get_headers_curl($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$r = curl_exec($ch);
return $r;
}
$the_header = get_headers_curl($post_url);
/// check for redirect /////////////////////////////////////////////////
if (preg_match("/Location:/i", $the_header)) {
$arr = explode('Location:', $the_header);
$location = $arr[1];
$location=explode(chr(10), $location);
$location = $location[0];
$the_header = get_headers_curl(trim($location));
}
/// Get charset /////////////////////////////////////////////////////////////////////
if (preg_match("/charset=/i", $the_header)) {
$arr = explode('charset=', $the_header);
$charset = $arr[1];
$charset=explode(chr(10), $charset);
$charset = $charset[0];
}
///////////////////////////////////////////////////////////////////////////////
// echo $charset;
if($charset && $charset!='UTF-8') { $html = iconv($charset, "UTF-8", $html); }
如果没问题,可能有人需要它。
谢谢。听起来确实不错,您可以根据我给出的答案查找php认为是的字符集,如果缺少字符集,则可以查找。;)我曾尝试使用
mb\u detect\u编码
,但工作不正常。据我所知,它使用的是系统语言环境,而且它只在某些情况下工作。那么你从哪里得到它,即使用语言环境?