@leo_fr

Как правильно вывести данные в xPath при таких условиях?

Добрый вечер. У меня проблема не получается вывести текст(3) с помощью xPath, и ещё можно ли как то вытянуть чисто дату из выводится вместе с тегом. Заранее спасибо за помощь.
<div class="editorial content-copy big">
   <strong class="MS4CrawlHeadline">
   текс 1bla-bla-bla
   <br>
   <br>
  текс2  bla-bla-bla
   </strong>
   <br>
   <br>
   текс3  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla  bla-bla-bla
   <br>
  <p> Дата lalalla  * 20.12.2015 </p>
  <p> Дата lalalla  * 20 май 2015 </p>
  <p> Дата lalalla  * 20 october 2015 </p>
</div>
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 2
Xpath "div/text()" выдаст "текс3 bla-bla-bla ..."
Попробуйте на этом сайте тестировать www.xpathtester.com/xpath
Ответ написан
Комментировать
glebovgin
@glebovgin
Full Stack Web Developer
Если говорить о конкретно этом куске html кода, то текст после strong можно получить так:
//div/strong/following-sibling::text()
В итоге надо будет пройти по получившемуся DOMNodeList тем же foreach, потому как текст3 находится в item(1) в конкретно этом случае.

С помошью xpath получать дату смысла нет, нужно взять nodeValue в нужном теге p и старой доброй регуляркой получить дату.
Если говорить про конкретно ваш случай, то вот такой вариант (php):
$q = $xpath->query('//div/p');
$r =  $q->item(0)->nodeValue; // самый первый параграф
preg_match('/\*(.*)/i', $r, $match);
echo trim($match[1]); // результат
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы