我正在使用DOMDocument在输出到页面之前操作/修改HTML。这只是一个html片段,而不是完整的页面。我的初始问题是所有法语字符都乱了,经过一些尝试和错误后,我能够进行更正。现在,似乎只剩下一个问题:'字符会被转换为?。
代码:
<?php
$dom = new DOMDocument('1.0','utf-8');
$dom->loadHTML(utf8_decode($row->text));
//Some pretty basic modification here, not even related to text
//reinsert HTML, and make sure to remove DOCTYPE, html and body that get added auto.
$row->text = utf8_encode(preg_replace('/^<!DOCTYPE.+?>/', '', str_replace( array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $dom->saveHTML())));
?>
我知道使用UTF8解码/编码可能会有些混乱,但这是目前我能让它正常工作的唯一方式。以下是一个示例字符串:
输入: Sans doute parce qu’il vient d’atteindre une date déterminante dans son spectaculaire cheminement
输出: Sans doute parce qu?il vient d?atteindre une date déterminante dans son spectaculaire cheminement
如果我找到更多细节,我会添加的。谢谢您的时间和支持!
$row->text
是什么字符集?如果它直接是UTF-8(假设它来自MySQL,您需要将连接字符集设置为UTF8),那么您就不需要使用utf8_(en|de)code
函数。强制将字符集设置为UTF8,所有问题应该都会消失(假设$row
就是来自这里)... - ircmaxell