为什么XML在某些特殊字符上显示错误,而有些则没有问题?
例如,下面将创建错误,
<?xml version="1.0" standalone="yes"?>
<Customers>
<Customer>
<Name>Löic</Name>
</Customer>
</Customers>但这没什么,
<?xml version="1.0" standalone="yes"?>
<Customers>
<Customer>
<Name>&</Name>
</Customer>
</Customers>顺便说一下,我通过php - htmlentities('Löic',ENT_QUOTES)来转换特殊字符.
我怎么才能避开这一切?
谢谢。
编辑:
我发现如果我使用数字字符(如Lóic ),它可以正常工作。
现在我必须找到如何使用php将特殊字符转换为数字字符!
发布于 2011-01-24 22:01:33
XML规范中定义了五个实体:&、<、>、'和"。
有在HTML中定义的许多实体。
您不能在通用XML中使用HTML中的内容。
您可以使用数字引用,但最好是将您的字符编码弄清楚(基本上可以归结为:
)
发布于 2011-01-24 22:01:45
因为它不是内置实体,而是需要在DTD中声明的外部实体。
发布于 2021-12-15 01:07:59
TLDR溶液
您可以用html_entity_decode() (来源: PHP.net)来解决这个问题,就像.
$xml_line = '<description>' . html_entity_decode($description) . '</description>';完整的,在线演示
在本演示中,我使用’和陶德清中的一行来演示上面使用的html_entity_decode().
$title = 'The name you can say isn’t the real name.';
$xml_title = html_entity_decode($title)
$xml_title = str_replace(['<', '>',], ['<', '>',], $xml_title );
$xml_line = '<title>' . $xml_title . '</title>';
print($xml_line);不过,别忘了把那些<和>字符替换回来!
你怎么知道它起作用了?
想确认一下它是否正常工作吗?然后转到W3C,并看到上面的代码被批准为很好。
https://stackoverflow.com/questions/4787700
复制相似问题