如何选择id包含特定子字符串的所有元素?

时间:2011-01-19 02:03:31

标签: php xpath

我想选择id包含特定子字符串的所有元素。例如:

<div id="foobootoo"><div>
<div id="foowoohoo"><div>
<div id="foodoowoo"><div>
<div id="soobootoo"><div>

我想获取id中包含foo的元素。

4 个答案:

答案 0 :(得分:2)

首先,你的标记似乎破了。一旦你修复它:

<div id="foobootoo"></div>
<div id="foowoohoo"></div>
<div id="foodoowoo"></div>
<div id="soobootoo"></div>

如果使用此xpath,则只能获得前三个节点://div[contains(@id, 'foo')]

答案 1 :(得分:1)

如果要选择多个元素,只需为元素指定相同的类。

<div id="foobootoo" class="foo"><div>
<div id="foowoohoo" class="foo"><div>
<div id="foodoowoo" class="foo"><div>
<div id="soobootoo" class="foo"><div>

答案 2 :(得分:1)

你有没有试过像......

$result = $xml->xpath("div[contains(@id,'foo')]");

答案 3 :(得分:0)

查看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(即只有前三个)。

值得一提的是,还有其他选择器,但这些选择器似乎符合您的需求。