Php DOMAttr';s值属性令人困惑?

Php DOMAttr';s值属性令人困惑?,php,dom,domdocument,Php,Dom,Domdocument,我一直在使用DOMDocument及其所有相关类,但有些事情我还不清楚 例如,$domattr->value返回 http://bla.com/?bla=test&bla2=test 什么时候应该回来 http://bla.com/?bla=test&bla2=test (因为这是属性节点文本节点实际包含的内容) 下面是我的问题: 1) 为什么它要转换符号:从DOMAttr的观点来看,它背后的逻辑是什么 2) 如何使用DOMNodes以获得真实值 3) 在处理此类问

我一直在使用DOMDocument及其所有相关类,但有些事情我还不清楚

例如,$domattr->value返回

http://bla.com/?bla=test&bla2=test 
什么时候应该回来

http://bla.com/?bla=test&bla2=test
(因为这是属性节点文本节点实际包含的内容)

下面是我的问题:

1) 为什么它要转换符号:从DOMAttr的观点来看,它背后的逻辑是什么

2) 如何使用DOMNodes以获得真实值


3) 在处理此类问题时,有哪些最佳做法?我希望有一致且可预测的代码和行为,但当我没有得到我所期望的时,它可能会令人困惑。

编写
&
而不是
&
是因为
&
字符在HTML源代码中具有特殊意义。当浏览器将HTML源代码解析为DOM树时,它会将HTML实体(
•
等)转换为相应的字符。不需要在DOM树中保留HTML实体-浏览器不会这样做。

编写
的全部要点&
而不是
&
是因为
&
字符在HTML源代码中具有特殊意义。当浏览器将HTML源代码解析为DOM树时,它会将HTML实体(
•
等)转换为相应的字符。不需要在DOM树中保留HTML实体-浏览器不会这样做。

因此,DOMNode::$nodeValue、DOMNode::$textContent和DOMAttr::$value在HTML特殊字符方面的行为都是相同的?@x74x61是的。我不确定这在HTML标准中是在哪里定义的,但是我做了一个跨浏览器的快速测试,所有浏览器中的实体都被替换了。啊,好的。我想我现在明白了。所以像DOMNode::saveHTML()这样的方法使它再次成为所有html实体,对吗?谢谢,伙计,几乎所有的东西都被清除了。@x74x61 Hm,我不知道(我不使用PHP DOM)。saveHTML()返回带有dom(或其一部分)html表示形式的字符串,所以我很确定它是这样的。我来测试一下。编辑:我的意思是DOMDocument::saveHTML(),那么DOMNode::$nodeValue,DOMNode::$textContent和DOMAttr::$value在html特殊字符方面的行为都是一样的?@x74x61是的。我不确定这在HTML标准中是在哪里定义的,但是我做了一个跨浏览器的快速测试,所有浏览器中的实体都被替换了。啊,好的。我想我现在明白了。所以像DOMNode::saveHTML()这样的方法使它再次成为所有html实体,对吗?谢谢,伙计,几乎所有的东西都被清除了。@x74x61 Hm,我不知道(我不使用PHP DOM)。saveHTML()返回带有dom(或其一部分)html表示形式的字符串,所以我很确定它是这样的。我来测试一下。编辑:我的意思是DOMDocument::saveHTML()