4

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

echo "Café"; 

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

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

echo $d->textContent;

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

4

3 回答 3

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;
于 2012-10-20T10:32:38.947 回答
1

您的问题是编码,
对于第一个回声,您使用默认编码回显文本,
但对于通过 DOMDocument 排序的文本,
e+撇号被分成两个字符,

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

希望我有所帮助,祝你好运。

于 2012-10-20T10:31:35.840 回答
1

在 HTML 之前使用 First echo,您可以使用服务器默认编码发送 HEADERS。这会忽略任何下一组编码。您必须先回显

<Html tag and encodings etc.. 

而不是回显任何其他值..

于 2012-10-20T10:35:34.140 回答