我想使用PHP中的XPath选择最靠近表单上方的标题元素(无论是h1,h2,h3,h4,h5还是h6)。
<h2>Foo</h2>
<h3>Bar</h3>
<form>
<input />
</form>
上面的示例应返回h3(Bar),因为它最接近表单。
<h4>Kee</h4>
<form>
<input />
</form>
另一方面,此示例应返回h4(Kee),因为它是最接近的。
该查询(来自https://stackoverflow.com/a/2216795/4391251)仅适用于h2标签。我可以针对h1,h3,h4,h5等对其进行修改,但是我想要一个全面的查询。
$headings = $xpath->query('((//form)[2]/ancestor::*/h2[.!=""])[last()]');
基本上我想要这样的东西
$headings = $xpath->query('((//form)['.$i.']/ancestor::*/[h2 or h3][.!=""])[last()]');
除此之外不会返回任何结果,也不会返回任何结果(基于https://stackoverflow.com/a/7995095/4391251)
$headings = $xpath->query('((//form)['.$i.']/ancestor::*/[self::h2 or self::h3][.!=""])[last()]');
哪些查询将给出期望的结果?
您可以尝试这样的事情:
$xpath->query('//form['.$i.']/preceding-sibling::*[self::h2 or self::h3][1]')
基本上,xpath获得的第一个先前的兄弟姐妹form[i]
是<h2>
或<h3>
(或其他,只列出xpath谓词中需要的所有其他元素)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句