™转换为 - DOMDocument XPath

时间:2011-10-29 01:08:24

标签: php javascript xpath domdocument

如果我有

<p id='test'>TEST&trade;</p>

我用

document.getElementById('test').innerHTML;

将HTML传递给php函数,在该函数中使用DOMDocument和XPath提取所有文本节点。

当PHP获取内容时&trade;转换为™。我通过XPath运行它,文本节点返回:

TESTâ„ ¢

我不确定出现了什么问题,或者是否有办法解决它,或者在javascript方面进行修复,以便它通过&trade;而不是™。

感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

使用PHP字符传递变量的值,而不是&trade;,在PHP中通过htmlentities()传递的值应该处理它。

答案 1 :(得分:0)

您可以尝试使用HTML Unicode表单

EX

<p id='test'>&#8482;</p>

阅读本页以获取有关Unicode TM的更多示例

http://www.fileformat.info/info/unicode/char/2122/index.htm

希望这有帮助。

答案 2 :(得分:0)

你需要更准确地说它“回归”。该™似乎是用UTF-8编码的某处编写的,然后相同的字节被一些没有意识到它们采用UTF-8编码的东西读取,并假设它们是Latin-1或类似的。要解决这个问题,您需要仔细查看编写该字符的软件的配置以及读取该字符的软件。

答案 3 :(得分:0)

迈克尔说的是真的;此外,您应该知道XML处理器基本上需要将字符实体(例如&amp; tm;)转换为它们的实际字符值,并且(几乎)总是产生具有以某些主要字符集编码的字符的输出。采取英雄措施来防止这种情况,通常不是一个“好主意”。因此,您应该放弃尝试这样做,我的猜测是,通过确保您传递HTML的函数被告知将其解释为utf-8而不是其他字符集(可能只是系统默认)。