PHP, используя xpath для получения всех svgs внутри <li>

У меня есть этот html:

<ul class = "details">

<li>
  <svg class = "icon"><use xlink:href = "#icon-location"></use></svg>
  
    <span>São João de Vêr, Aveiro</span>
  
</li>



<li>
  <svg class = "icon"><use xlink:href = "#icon-contract"></use></svg>
  Permanente
</li>


<li>
  <svg class = "icon"><use xlink:href = "#icon-duration"></use></svg>
  Horário completo
</li>

Отсюда мне нужно получить содержимое каждого li с отдельными данными (svg и текст после).

Я пробую это, но получаю только содержимое li без элемента sgv:

$dom = new \DOMDocument();
    $dom->preserveWhiteSpace = false;
    $dom->loadHTML($html);
    $xpath = new \DOMXPath($dom);

    $div = $xpath->query('//ul[@class = "details"]');
    $div = $div->item(0);
    $result = $dom->saveXML($div);
    dd($result);

Результат:

<ul class = "details">    
<li>     
    <span>São João de Vêr, Aveiro</span>      
</li>
<li>
  Permanente
</li>
<li>      
  Horário completo
</li>    

Ожидаемый результат:

<ul class = "details">  
<li>
  <svg class = "icon"><use xlink:href = "#icon-location"></use></svg>    
    <span>São João de Vêr, Aveiro</span>      
</li>
<li>
  <svg class = "icon"><use xlink:href = "#icon-contract"></use></svg>
  Permanente
</li>
<li>
  <svg class = "icon"><use xlink:href = "#icon-duration"></use></svg>
  Horário completo
</li>

Любая идея, почему это происходит?

Каков именно ваш ожидаемый результат?

Jack Fleeting 12.12.2020 02:18

Спасибо @JackFleeting за этот совет :). Я отредактировал пост и добавил ожидаемый результат.

Rui Costa 12.12.2020 02:30

У меня работает код: ideone.com/06wsMP

wp78de 12.12.2020 02:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это должно работать:

$div = $xpath->query('//ul[@class = "details"]/*');
foreach($div as $d){
  $result = $dom->saveXML($d);
  echo($result);
  }

Другие вопросы по теме