相关疑难解决方法(0)

禁用PHP DOMDocument中的html实体编码

我无法弄清楚如何阻止DOMDocument破坏这些字符.

<?php

$doc = new DOMDocument();
$doc->substituteEntities = false;
$doc->loadHTML('<p>¯\(°_o)/¯</p>');
print_r($doc->saveHTML());

?>
Run Code Online (Sandbox Code Playgroud)

预期输出:¯(°_o)/¯

实际输出:¯(°_o)/¯¯

http://codepad.org/W83eHSsT

php dom

8
推荐指数
1
解决办法
5123
查看次数

DOMDocument 和 HTML 实体

我正在尝试解析一些包含一些 HTML 实体的 HTML,例如 ×

$str = '<a href="http://example.com/"> A &#215; B</a>';

$dom = new DomDocument;
$dom -> substituteEntities = false;
$dom ->loadHTML($str);

$link = $dom ->getElementsByTagName('a') -> item(0);
$fullname = $link -> nodeValue;
$href = $link -> getAttribute('href');

echo "
fullname: $fullname \n
href: $href\n";    
Run Code Online (Sandbox Code Playgroud)

但是 DomDocument 将文本替换为 A × B。

有什么方法可以防止它为 HTML 实体使用 & 并让它不理会它吗?我试图将替换实体设置为假,但它没有做任何事情

php character-encoding domdocument

5
推荐指数
1
解决办法
8020
查看次数

UTF-8与PHP DOMDocument loadHTML?

考虑这个例子,test.php:

<?php
$mystr = "<p>Hello, ?? ????  ça øy je??</p>";
var_dump($mystr);
$domdoc = new DOMDocument('1.0', 'utf-8'); //DOMDocument();
$domdoc->loadHTML($mystr); // already here corrupt UTF-8?
var_dump($domdoc);
?>
Run Code Online (Sandbox Code Playgroud)

如果我用PHP 5.5.9(cli)运行它,我进入终端:

$ php test.php 
string(50) "<p>Hello, ?? ????  ça øy je??</p>"
object(DOMDocument)#1 (34) {
  ["doctype"]=>
  string(22) "(object value omitted)"
...
  ["actualEncoding"]=>
  NULL
  ["encoding"]=>
  NULL
  ["xmlEncoding"]=>
  NULL
...
  ["textContent"]=>
  string(70) "Hello, με à¤à¤¾à¤à¤  ça øy jeÅÄ"
}
Run Code Online (Sandbox Code Playgroud)

显然,原始字符串正确为UTF-8,但textContentDOMDocument的字符串编码不正确.

那么,如何在DOMDocument中将内容作为正确的UTF-8获取?

php utf-8

3
推荐指数
1
解决办法
2865
查看次数

标签 统计

php ×3

character-encoding ×1

dom ×1

domdocument ×1

utf-8 ×1