我有以下XPath查询,一个SO上的好心用户帮助了我:
$xpath->query(".//*[not(self::textarea or self::select or self::input) and contains(., '{{{')]/text()") as $node)
其目的是用某个值替换某些占位符,并正确捕获不应该替换的以下情况:
<textarea id="testtextarea" name="testtextarea">{{{variable:test}}}</textarea>
并正确替换出现的情况:
<div>{{{variable:test}}}</div>
现在,我要排除类型为<div>
的元素,该元素在该查询中还包含类名note-editable
,例如<div class="note-editable mayhaveanotherclasstoo">
,以及文本区域,选择或输入。 / p>
我尝试过:
$xpath->query(".//*[not(self::textarea or self::select or self::input) and not(contains(@class, 'note-editable')) and contains(., '{{{')]/text()") as $node)
和:
$xpath->query(".//*[not(self::textarea or self::select or self::input or contains(@class, 'note-editable')) and contains(., '{{{')]/text()") as $node)
在以下类似问题上,我遵循了建议:PHP xpath contains class and does not contain class,并且没有出现PHP错误,但是note-editable
<div>
标签仍在替换其占位符。 / p>
您知道我尝试查询出了什么问题吗?
答案 0 :(得分:0)
在xpath下使用它。
.//*[not(self::textarea or self::select or self::input or self::div[contains(@class,'note-editable')]) and contains(., '{{{')]