@prozrost

Symfony DomCrawler. Как выбрать ноду с определенным текстом?

Использую Symfony DomCrawler для парсинга сайта. Есть например таблица, с множеством строк и столбцов. Мне нужны данные конкретного столбца, первой строки, например. Есть такая структура:
<tr class="info">
      <td>Год рождения</td>
      <td>1953<td>
   <tr>

И мне нужно выбрать конкретное значение Года рождения.(Далее идут строки с данными похожей структуры, которые мне так же нужно извлечь)
Я делал сперва через функцию eq.(Находил второй элемент в строке и извлекал значение). Но это не очень хороший путь, так как только меняется немного html и порядок элементов- все не работает. Хотел находить текст "Год рождения" через функцию filterXPath. Получалось что то такое:
$name =  $short->filterXPath('//text()[contains(.,"Дата Рождения")]')->text();

Но чет не получается таким способом у меня найти элемент. И похожего "поиска" нигде не нашел. Подскажите, как можно написать, что то универсальное и обойти мою проблему.
  • Вопрос задан
  • 373 просмотра
Пригласить эксперта
Ответы на вопрос 1
@alexandrraizer
PHP developer
До конца вопрос не понятен..
но чтоб в данной ситуации получить блок tr :
$name =  $short->filterXPath('//*[*[contains(.,"Дата Рождения") and not(count(*))]]')->text();


находит элемент который внутри себя имеет элемент который содержит только текст в котором есть наша фраза и не содержит в себе тегов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы