0

我有一个DOMDocument我要附加一些节点的。在一些文本内容中,有特殊字符如©,-,δ等...

我的目标是在 中插入这些字符时DOMDocument,它们将分别转换为数字字符引用 (NCR) 或实体:

© - ©
– - –
δ - δ
4

1 回答 1

2

将编码设置为不包含这些字符的字符集,例如us-ascii.

例子:

$dom = new DOMDocument();
$dom->loadXML('<foo>©</foo>');
$dom->encoding = 'us-ascii';
print($dom->saveXML());

导致:

<?xml version="1.0" encoding="us-ascii"?>
<foo>&#169;</foo>

要将实体更改为十六进制,您可以应用类似

preg_replace('/&#([0-9]+);/e', '\'&#x\'.strtoupper(dechex($1)).\';\'', $xml);

到 XML 输出。

于 2013-10-15T08:32:25.073 回答