【发布时间】:2012-06-23 16:21:15
【问题描述】:
我想选择 id 包含特定子字符串的所有元素。例如对于这些:
<div id="foobootoo"><div>
<div id="foowoohoo"><div>
<div id="foodoowoo"><div>
<div id="soobootoo"><div>
我想获取 id 中包含 foo 的元素。
【问题讨论】:
我想选择 id 包含特定子字符串的所有元素。例如对于这些:
<div id="foobootoo"><div>
<div id="foowoohoo"><div>
<div id="foodoowoo"><div>
<div id="soobootoo"><div>
我想获取 id 中包含 foo 的元素。
【问题讨论】:
首先,您的标记似乎损坏了。一旦你像这样修复它:
<div id="foobootoo"></div>
<div id="foowoohoo"></div>
<div id="foodoowoo"></div>
<div id="soobootoo"></div>
如果你使用这个 xpath,你只会得到前三个节点://div[contains(@id, 'foo')]。
【讨论】:
如果要选择多个元素,只需赋予元素相同的类即可。
<div id="foobootoo" class="foo"><div>
<div id="foowoohoo" class="foo"><div>
<div id="foodoowoo" class="foo"><div>
<div id="soobootoo" class="foo"><div>
【讨论】:
你有没有尝试过……
$result = $xml->xpath("div[contains(@id,'foo')]");
【讨论】:
查看 CSS3 选择器(例如,参见 Web page)。您可以使用以下选择器:
div[id*="foo"]
你会选择所有 id 中包含子字符串“foo”的 div。
但是,如果您只想要 id 以“foo”开头的 div,请使用
div[id^="foo"]
如果你重新排列你的 div 的 id 如下:
<div id="foo-bootoo"><div>
<div id="foo-woohoo"><div>
<div id="foo-doowoo"><div>
<div id="soo-bootoo"><div>
你可以使用:
div[id|="foo"]
选择所有 id 以 foo 开头的 div,其余的 id 用连字符分隔(因此,只有前三个)。
此外,如果您将 div 的 id 重新排列如下(即,将子字符串“foo”放在 id 的末尾):
<div id="bootoofoo"><div>
<div id="woohoofoo"><div>
<div id="doowoofoo"><div>
<div id="bootoosoo"><div>
你可以使用:
div[id$="foo"]
选择所有 id 以 foo 结尾的 div(即仅前三个)。
值得一提的是,还有其他选择器,但这些似乎符合您的需求。
【讨论】: