Разбиение перечисленных элементов из строки DOM в массив с использованием PHP - PullRequest
0 голосов
/ 14 марта 2019

У меня есть отформатированная строка html с некоторыми элементами UL, и я хочу разбить ее на массив php.

Как:

<ul>

  <li>List 1
    <ul>
      <li>item 1</li>
      <li>item 2</li>
      <li>item 3</li>
    </ul>
  </li>

  <li>List 2
    <ul>
      <li>item 1</li>
      <li>item 2</li>
      <li>item 3</li>
    </ul>
  </li>

  <li>List 3
    <ul>
      <li>item 1</li>
      <li>item 2</li>
      <li>item 3</li>
    </ul>
  </li>
</ul>

Что я ищу, так эторешение, которое получит теги li первого уровня (включая содержимое / структуру в нем) в php-массивы.Я пытался сплит, но его хрупкий.Мелькнул в DOMXpath ... Кто-нибудь?

1 Ответ

0 голосов
/ 14 марта 2019
$str = '<ul>    
  <li>List 1
    <ul>
      <li>item 1</li>
      <li>item 2</li>
      <li>item 3</li>
    </ul>
  </li>

  <li>List 2
    <ul>
      <li>item 1</li>
      <li>item 2</li>
      <li>item 3</li>
    </ul>
  </li>

  <li>List 3
    <ul>
      <li>item 1</li>
      <li>item 2</li>
      <li>item 3</li>
    </ul>
  </li>
</ul>';

$doc = new DOMDocument();
$doc->loadHTML($str);
$elements = $doc->getElementsByTagName('body')->item(0)->childNodes;
$data = array();
foreach ($elements as $node) {
    foreach ($node->childNodes as $child) {  
        $data[]=$doc->saveHtml($child);
    }
}
foreach($data as $d)
    echo $d;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...