【发布时间】:2015-11-02 03:53:40
【问题描述】:
我有一个看起来像这样的方法:
function braces(DOMElement $node){
$path = $node->getNodePath();
$xpath = new DOMXPath($node->ownerDocument);
$nodes = $xpath->query($path . '[*=(contains(., "{{") and contains(., "}}"))]');
var_dump($nodes);
}
我创建了以下两个测试用例:
测试用例 1
$dom = new DOMDocument();
$dom->loadHTML('<div data-id="{{cat}}">
<a href="http://google.com">Google</a>
</div>',LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED);
braces($dom->documentElement);
这个上的var_dump()没有找到{{和}}的属性。
这是测试用例 1 的结果输出:
object(DOMNodeList)#4 (1) {
["length"]=>
int(0)
}
测试用例 2
$dom = new DOMDocument();
$dom->loadHTML('<div data-id="{{cat}}"></div>',LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED);
braces($dom->documentElement);
当删除子a 元素时,var_dump() 现在可以找到带有{{ 和}} 的属性。
这是测试用例 2 的结果输出:
object(DOMNodeList)#3 (1) {
["length"]=>
int(1)
}
所以,我的问题是为什么当项目有孩子时它不能找到价值?
【问题讨论】: