@Shimpanze

Как получают и сразу объединяют следующие (за текущим) элементы?

Здравствуйте!

Есть разметка:

<div class="abc">
  <span class="foo">Hello</span>
  <span class="bar">World</span>
  <span class="baz">by</span>
</div>


Как оттолкнувшись от элемента span.foo получить текстовое содержимое следующих двух (span.bar и span.baz).

На выходе надо получить одну строку: «World by».

Пишу так:

div/span[@class="foo"]//concat(following-sibling::*[1], following-sibling::*[2])


В песочнице работает, но на реальном проекте - нет. Так как нельзя в строку напрямую передавать функцию concat(). Когда я оборачиваю ее в квадратные скобки - тоже не работает.
  • Вопрос задан
  • 28 просмотров
Решения вопроса 1
@Roman-Fov
<?php

$dom = new DOMDocument();
$dom->loadXML('
    <div class="abc">
        <span class="foo">Hello</span>
        <span class="bar">World</span>
        <span class="baz">by</span>
    </div>');

$xpath = new DOMXPath($dom);
$result = $xpath->evaluate('concat(/div/span[@class="foo"]/following-sibling::*[1], " ", /div/span[@class="foo"]/following-sibling::*[2])');

var_dump($result);


Результат:
string 'World by' (length=8)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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