解析具有不同编码的页面

时间:2013-07-25 15:07:22

标签: php encoding html-parsing

我为wordpress创建了一个解析器,但由于wp和db正在使用utf-8,而且有些页面使用不同的编码,因此当我解析它们时,我得到了gibrish。 我使用curl从外部网址获取内容,并使用一些匹配并替换为正则表达式。

有任何建议如何解决这个问题?

我使用了下面Joni的建议,它解决了我的问题。我将来用于此问题的一些示例代码:

preg_match("/charset=(.*?)(\n|'|\"|>)/ism", $content, $charset);
$content = preg_replace('/^HTTP+[^<]+</', '<', $content);
$charset = @trim($charset[1]);
if (preg_match("~(windows-1251|1251)~i", $charset)) return 'Windows-1251'; 
elseif (preg_match("~iso-8859-7~i", $charset))  return 'ISO-8859-7';
elseif (preg_match("~(koi8|iso-ir-111)~i", $charset))  return 'KOI8-R';

1 个答案:

答案 0 :(得分:0)

从内容类型标题中检测正确的编码(如果标题丢失,则检测HTML元标记),并在解析文档时使用它。