9

我正在使用 CKEditor 让用户发表评论,用户也可以将 unicode 字符放在评论框中。

当我提交表单并检查 $_POST["reply"] 时,unicode 字符显示得非常好。我也在header('Content-type:text/html; charset=utf-8');页面顶部使用过,但是当我使用 PHP DOMDocument 处理它时,所有字符都变得不可读。

$html_unicode = "xyz unicode data";
$html_data = '<body>'.$html_unicode . '</body>';
$dom = new DOMDocument();
$dom->loadHTML($html_data );

$elements = $dom->getElementsByTagName('body');

当我回响

echo $dom->textContent;

输出变为

§Ø³ÙبÙÙ ÙÙÚº غرÙب ک٠آÙÛ ÙÛÙ

如何使用 PHP DOMDocument 取回正确的 unicode 字符。

4

4 回答 4

19

这对我有用:

$html_unicode = "xyz unicode data";
$html_data = '<body>'.$html_unicode . '</body>';

$dom = new DOMDocument();
$html_data  = mb_convert_encoding($html_data , 'HTML-ENTITIES', 'UTF-8'); // require mb_string
$dom->loadHTML($html_data);

$elements = $dom->getElementsByTagName('body');
于 2014-01-23T01:12:15.087 回答
7

试试这个 :)

<?php
    $html_unicode = "xyz unicode data";
    $html_data = '<body>'.$html_unicode . '</body>';
    $dom = new DOMDocument();
    $dom->loadHTML($html_data );

    $elements = $dom->getElementsByTagName('body');
    echo utf8_decode($dom->textContent);
?>
于 2013-03-29T13:39:00.750 回答
1

感谢上帝,我通过更换得到了解决方案

$html_data = '<body>'.$html_unicode . '</body>';

$html_data = '<head><meta http-equiv="Content-Type" 
content="text/html; charset=utf-8">
</head><body>' . $html_unicode . '</body>';
于 2013-03-29T13:39:25.550 回答
1

这适用于阿拉伯语

<?php
echo "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1256\"></head><body>";
$html = file_get_contents("    url    ");
$dom = new DOMDocument();
@$dom->loadHTML($html);
$ExTEXT = $dom->getElementById('tag id');
echo utf8_decode($ExTEXT->textContent);
echo "</body></html>";
于 2013-09-22T10:36:08.567 回答