HTML список в массив - PullRequest
       10

HTML список в массив

2 голосов
/ 31 января 2010

Как мне разобрать многоуровневый список HTML и получить массив по php


Я пытаюсь этот код

$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] =>.... 

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Это все там. Сделайте var_export на объекте $html, чтобы увидеть всю структуру объекта. Чтобы получить данные в нужный массив, вам, возможно, придется использовать процедуры обхода дерева (то есть firstChild, nextSibling и т. Д.) И построить свой массив.

1 голос
/ 31 января 2010

С парсером HTML .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...