首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP对nodeValue?

PHP对nodeValue?
EN

Stack Overflow用户
提问于 2012-09-12 03:46:11
回答 5查看 41.1K关注 0票数 53

PHP DOMnode对象包含一个textContentnodeValue属性,这两个属性似乎都是节点的innerHTML。

nodeValue:此节点的值,取决于其类型 textContent:此属性返回此节点及其后代的文本内容。

这两种属性有什么区别?什么时候使用一种而不是另一种合适?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-07-14 05:52:20

最后,我也想知道其中的区别,所以我深入研究了来源并找到了答案;在大多数情况下,不会有明显的差别,但是有很多边缘情况您应该知道。

对于以下类(节点类型),->nodeValue->textContent都是相同的:

  • DOMAttr
  • DOMText
  • DOMElement
  • DOMComment
  • DOMCharacterData
  • DOMProcessingInstruction

->nodeValue属性为以下类(节点类型)生成NULL

  • DOMDocumentFragment
  • DOMDocument
  • DOMNotation
  • DOMEntity
  • DOMEntityReference

以下类不存在->textContent属性:

  • DOMNameSpaceNode (没有文档,但可以在//namespace:*选择器中找到)

以下类不存在->nodeValue属性:

  • DOMDocumentType

另见:dom_node_node_value_read()dom_node_text_content_read()

票数 48
EN

Stack Overflow用户

发布于 2012-09-12 05:04:31

希望这是有意义的:

代码语言:javascript
复制
$doc = DOMDocument::loadXML('<body><!-- test --><node attr="test1">old content<h1>test</h1></node></body>');
var_dump($doc->textContent);
var_dump($doc->nodeValue);
var_dump($doc->firstChild->textContent);
var_dump($doc->firstChild->nodeValue);

输出:

代码语言:javascript
复制
string(15) "old contenttest"
NULL
string(15) "old contenttest"
string(15) "old contenttest"

因为:nodeValue -此节点的值,取决于其类型

票数 20
EN

Stack Overflow用户

发布于 2016-12-06 17:03:57

textContentnodeValue都返回未转义的文本;即&lt;变为<

textContent将所有子级的所有内容连接在一起。这是一个重要的区别;例如,在Chrome中,nodeValue的最大长度是65536个字符(而不是字节);如果您已经将节点的内容设置为更长的内容,那么如果您想要使用nodeValue,则需要迭代子节点,而textContent将为您执行连接。

如前所述,还有几个DOM类不支持nodeValue,但支持textContent

由于明显的原因,nodeValue速度更快;但是,除非您确切知道节点结构是什么,否则不要使用它。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12380919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档