2010-01-31 51 views
2

如何可以解析的多级HTML列表和PHP得到一个数组HTML列表阵列


我想这个代码

$text='<ol> 
      <li>31</li> 
      <li>32</li> 
      <li>33</li> 
      <li>34</li> 
      <li> 
       <ol> 
        <li>341</li> 
        <li>342</li> 
        <li>343</li> 
        <li>344</li> 
        <li> 
         <ol> 
          <li>3441</li> 
          <li>3442</li> 
          <li>3443</li> 
          <li>3444</li> 
         </ol> 
        </li> 
       </ol> 
      </li> 
     </ol>'; 


$html = str_get_html($text); 
foreach($html->find('ol') as $ol) 
{ 
    $array[] = $ol->innertext; 
} 

print_r($array); 

下面是结果

Array 
(
    [0] => 
      <li>31</li> 
      <li>32</li> 
      <li>33</li> 
      <li>34</li> 
      <li> 
       <ol> 
        <li>341</li> 

        <li>342</li> 
        <li>343</li> 
        <li>344</li> 
        <li> 
         <ol> 
          <li>3441</li> 
          <li>3442</li> 

          <li>3443</li> 
          <li>3444</li> 
         </ol> 
        </li> 
       </ol> 
      </li> 

    [1] => 
        <li>341</li> 

        <li>342</li> 
        <li>343</li> 
        <li>344</li> 
        <li> 
         <ol> 
          <li>3441</li> 
          <li>3442</li> 

          <li>3443</li> 
          <li>3444</li> 
         </ol> 
        </li> 

    [2] => 
          <li>3441</li> 
          <li>3442</li> 

          <li>3443</li> 
          <li>3444</li> 

) 

但我需要的东西像这样

Array 
(
    [0] => Array 
       (
       [0] => Array 
         (
          [0] =>.... 

回答

1

HTML parser

+0

非常感谢,但这解析HTML列表像$ OL [0],$ OL [1],$ OL [2] ...,我需要像这样的多级解析器$ OL [0] [0],$ OL [0] [1]和$ OL [1] [0],$ OL [1] [1],$ OL [1] [2]等等...... – 2010-01-31 13:41:16

+0

所以你必须使用一点肘然后是油脂。 – 2010-01-31 13:46:53

1

这一切都在那里。在$html对象上执行var_export以查看整个对象结构。为了将数据存入你想要的数组中,你可能必须使用树步行例程(即firstChild,nextSibling等),并建立你的数组。