在domdocument中加载后字符串的结果不同

时间:2012-10-20 10:23:02

标签: php domdocument

我希望在domdocument中加载后得到相同的结果。怎么做?

echo "Café"; 

$s = <<<HTML
<html>
<head>
</head>
<body>
Café
</body>
</html>
HTML;

$d = new domdocument;
$d->loadHTML($s);

echo $d->textContent;

第一个回声的结果是=Café
第二个回声的结果是=Café

3 个答案:

答案 0 :(得分:2)

您需要将HTML标记为UTF-8编码

$s = <<<HTML
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
Café
</body>
</html>
HTML;

$d = new domdocument;
$d->loadHTML($s);

echo $d->textContent;

答案 1 :(得分:1)

你的问题是编码,
 对于First Echo,您使用默认编码回显文本,
但是对于通过DOMDocument运行的文本,
e + apostroph被分成两个字符,

我不知道如何对DOMDoc强制执行正确的编码...
但我相信这是您的问题

希望我帮助过, 祝你好运。

答案 2 :(得分:1)

使用HTML之前的第一个echo,您可以使用服务器默认编码发送HEADERS。这忽略了任何下一组编码.. 你必须先回应

<Html tag and encodings etc.. 

并且回显任何其他值..