PHP DOMDocument - 如何强制使用数字字符引用或实体,而不是UTF8

时间:2013-10-15 08:19:13

标签: php xml dom encoding domdocument

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

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

© - ©
– - –
δ - δ

1 个答案:

答案 0 :(得分: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输出。