PHP解析转换错误的HTML类库simple_html_dom

我们这些天在simple_html_dom有文章。不同网站的编码是UTF-8 GBK GB2312基本在中国。他们中的大多数都是GB2312和UTF-8。

我simple_html_dom版本有一种convert_text是这样的。

复制代码代码如下所示:
paperg -转换 / /功能如果两组是不一样的从一个到另一个文本字符集。
功能convert_text($文本)
{
全球debug_object美元;
If (is_object ($debug_object)) {$debug_object->debug_log_entry (1);}
converted_text美元= $文本;
= $ sourcecharset ;
= $ targetcharset ;
如果($ - DOM)
{
sourcecharset = strtoupper美元(美元-> DOM -> _charset);
targetcharset = strtoupper美元(美元-> DOM -> _target_charset);
}
如果(is_object($ debug_object)){ $ debug_object -> debug_log(3,源字符:。sourcecharset美元。目标charaset:。targetcharset美元);}
如果(!空(美元sourcecharset)!空(美元targetcharset)(strcasecmp(sourcecharset美元,美元targetcharset)!= 0))
{
检查报告的编码可能/已误,文本实际上已经是UTF-8
如果((strcasecmp(targetcharset美元,'utf-8)= 0(美元-> is_utf8)($文本)))
{
converted_text美元= $文本;
}
其他的
{
converted_text美元= iconv(sourcecharset美元美元美元,targetcharset,文本);
}
}
让我们确保我们不 /愚蠢的BOM问题与任何UTF-8文本我们输出。
如果($ targetcharset = 'utf-8)
{
如果(substr(converted_text美元,0, 3)= = XeF XBB 工具)
{
converted_text美元= substr(converted_text美元,3);
}
如果(substr($ converted_text,- 3)= = XeF XBB 工具)
{
converted_text美元= substr(converted_text美元,0 - 3);
}
}
返回的converted_text;
}


看这条线:

复制代码代码如下所示:
converted_text美元= iconv(sourcecharset美元美元美元,targetcharset,文本);


它使转换是不正确的。例如,GB2312的文字将变成:

复制代码代码如下所示:
4月26日,楚归链公园马术在2014浪琴手表世界杯中国联赛飞跳,24岁的韩壮壮不仅得到零罚分…在出场的第七场比赛,包括奥运选手赵志文。像第一次收获77秒零分07…


现有的事实证明,转换函数的内部处理的不好,因为我用这个simple_html_dom,我只是想建立DOM。我不会花时间来处理这个bug,但简单地采取

复制代码代码如下所示:
converted_text美元= iconv(sourcecharset美元美元美元,targetcharset,文本);


改变

复制代码代码如下所示:
converted_text美元= $文本;


没关系,我们的想法是取消它的转码。