使用PHP将列出的项目从DOM字符串分解为数组

时间:2019-03-14 10:22:45

标签: php arrays dom

我有一个格式化的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数组的解决方案。我尝试过.split,但是它很脆弱。被困在DOMXpath ...有人吗?

1 个答案:

答案 0 :(得分:0)

$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;