我想在加载 domdocument 后得到相同的结果。怎么做?
echo "Café";
$s = <<<HTML
<html>
<head>
</head>
<body>
Café
</body>
</html>
HTML;
$d = new domdocument;
$d->loadHTML($s);
echo $d->textContent;
第一个回声的结果是 = Café
第二个回声的结果是 =Café
我想在加载 domdocument 后得到相同的结果。怎么做?
echo "Café";
$s = <<<HTML
<html>
<head>
</head>
<body>
Café
</body>
</html>
HTML;
$d = new domdocument;
$d->loadHTML($s);
echo $d->textContent;
第一个回声的结果是 = Café
第二个回声的结果是 =Café
您需要将您的 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;
您的问题是编码,
对于第一个回声,您使用默认编码回显文本,
但对于通过 DOMDocument 排序的文本,
e+撇号被分成两个字符,
我不知道如何对 DOMDoc 强制执行正确的编码......
但我相信这是你的问题
希望我有所帮助,祝你好运。
在 HTML 之前使用 First echo,您可以使用服务器默认编码发送 HEADERS。这会忽略任何下一组编码。您必须先回显
<Html tag and encodings etc..
而不是回显任何其他值..