Извлечение текста из родственных элементов HTML с использованием QueryPath в PHP - PullRequest
1 голос
/ 24 марта 2011

Я извлекаю данные из некоторых старых файлов HTML, используя PHP и библиотеку QueryPath. Извлечение легко, когда элемент, который мне нужен, имеет уникальный идентификатор или класс css3, но это не всегда так. У меня есть несколько файлов, содержащих данные следующего типа:

<div id="dataDiv">
<div class="1">Heading1</div><div class="2" title="">Data1</div>
<div class="1">Heading2</div><div class="2" title="">Data2</div>
</div>

Я хотел бы использовать QueryPath для поиска DIV класса "1", содержащего определенную строку текста (например, "Heading2"), а затем получить любой текст в соседнем элементе div класса 2 непосредственно рядом с ним , (В этом случае он получит «Data2»).

Есть ли встроенный функционал в QueryPath, который позволяет мне переходить к элементу на основе текста, который он содержит? Если это так, как только я найду этот элемент, как я могу получить текст содержимого его следующего родственного элемента?

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Моя естественная идея - это функция not(). Пример:

$qp2 = qp($tb)->find('table tr')->not('table tr table tr'); 
0 голосов
/ 23 мая 2012

Используйте оператор родственного брата в CSS 3:

qp($html, 'div.1:contains("Heading1") + div.2')->text();

Приведенное выше получает <div class="1"> с заголовком Heading1, затем получает соседнего родного брата с классом 2.

0 голосов
/ 24 октября 2011

Возможно, вы могли бы просто использовать QueryPath::get(n-1) для получения n-го объекта, отметьте this . Тем не менее, вы можете пойти дальше ...

...