我为 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';