Как выбрать все элементы, чей идентификатор содержит определенную подстроку? - PullRequest
1 голос
/ 19 января 2011

Я хочу выбрать все элементы, чей идентификатор содержит определенную подстроку. Например, для этих:

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

Я хочу получить элементы с foo в идентификаторе.

Ответы [ 4 ]

2 голосов
/ 19 января 2011

Прежде всего ваша разметка кажется сломанной. Как только вы исправите это так:

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

если вы используете этот xpath, вы получите только первые три узла: //div[contains(@id, 'foo')].

1 голос
/ 19 января 2011

Вы пробовали что-то вроде ...

$result = $xml->xpath("div[contains(@id,'foo')]");
1 голос
/ 19 января 2011

Если вы хотите выбрать несколько элементов, просто присвойте элементам один и тот же класс.

<div id="foobootoo" class="foo"><div>
<div id="foowoohoo" class="foo"><div>
<div id="foodoowoo" class="foo"><div>
<div id="soobootoo" class="foo"><div>
0 голосов
/ 23 июня 2012

Рассматривает селекторы CSS3 (например, см. Эту веб-страницу ).Вы можете использовать следующий селектор:

div[id*="foo"]

, и вы выберете все div, которые содержат подстроку "foo" в идентификаторе.

Однако, если вам нужны только div сid, начинающийся с «foo», используйте

div[id^="foo"]

Если вы измените id вашего div'а следующим образом:

<div id="foo-bootoo"><div>
<div id="foo-woohoo"><div>
<div id="foo-doowoo"><div>
<div id="soo-bootoo"><div>

, вы можете использовать:

div[id|="foo"]

выбрать все элементы div, идентификатор которых начинается с foo, а остальная часть id отделена дефисом (таким образом, только первые три).

Более того, если вы переставите id ваших элементов div следующим образом (то есть, поместив подстроку "foo" в конце идентификатора):

<div id="bootoofoo"><div>
<div id="woohoofoo"><div>
<div id="doowoofoo"><div>
<div id="bootoosoo"><div>

вы можете использовать:

div[id$="foo"]

, чтобы выбрать все элементы div, идентификатор которых заканчивается на foo (т.е. только первые три).

Стоит упомянуть, что есть и другие селекторы, но, похоже, они соответствуют вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...