我在 php 中尝试匹配具有以下格式的 id 属性的 html select 元素的 xpath 查询的语法有问题:
recipients-1234567-address
id 的数字部分会改变,并且可能不总是相同的长度。这是我到目前为止所尝试的:
$select_el =
$xpath->query(".//select[@id[
starts-with(., 'recipients-')
AND
substring-before(substring(.,11),'-') = number(substring-before(substring(.,11),'-'))
AND
substring-after(substring-after(.,'-'),'-') = 'address'
]]");
我认为问题可能与我的节点上下文有关,所以我也尝试了这种变化......
$select_el =
$xpath->query(".//select[
starts-with(@id, 'recipients-')
AND
substring-before(substring(@id,11),'-') = number(substring-before(substring(@id,11),'-'))
AND
substring-after(substring-after(@id,'-'),'-') = 'address'
]");
这是我第一次使用复杂的 xpath 表达式,所以我不确定我是否在这里偏离了基础。xpath 查询必须遵守有效的 xpath 1.0 语法。任何帮助,将不胜感激。