0

我为 wordpress 制作了一个解析器,但由于 wp 和 db 使用的是 utf-8 并且某些页面采用不同的编码,所以当我解析它们时,我得到了 gibrish。我使用 curl 从外部 url 获取内容,并使用正则表达式进行匹配和替换。

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

我使用了下面 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';
4

1 回答 1

0

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

于 2013-07-25T15:12:10.783 回答