@Shimpanze

XPath: как найти все узлы текущей переменной?

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

В WordPress есть переменная $content.

Мне необходимо обернуть КАЖДУЮ корневую ноду внутри этой переменной в тег div, чтобы получилось так:

<div class="parent"><i>Расписание</i></div>
<div class="parent"><i>Расписание</i></div>
<div class="parent"><i>Расписание</i></div>


Делаю так:

$cont = mb_convert_encoding( $content, 'HTML-ENTITIES', 'UTF-8' );
$dom = new DomDocument();
$dom->loadHTML( $content );
$xpath = new DomXPath( $dom );

foreach( $xpath->query( './/*' ) as $element ) {

  return "<div class=\"parent\">" . $element->C14N() . PHP_EOL . "</div>" . PHP_EOL;

}


Но он оборачивает ВСЁ содержимое этой переменной в div, а не каждую ноду. А получается так:

<div class="parent">
<i>Расписание</i>
<i>Расписание</i>
<i>Расписание</i>
</div>


Почему он не перебирает все элементы внутри переменной-то? Ведь всё правильно написано.
Я уже и так пробовал: $xpath->query( $content ), - все равно ни в какую не перебирает.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
HectorPrima
@HectorPrima
программист
<?php

$content = '
<i>Расписание</i>
<i>Расписание</i>
<i>Расписание</i>';

$cont = mb_convert_encoding( $content, 'HTML-ENTITIES', 'UTF-8' );
$dom = new DomDocument();
$dom->loadHTML( $content );
$xpath = new DomXPath( $dom );

foreach( $xpath->query( './/i' ) as $element ) {
  	echo "<div class=\"parent\">" . $element->C14N() . PHP_EOL . "</div>" . PHP_EOL;

}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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