Найдена только первая таблица с использованием простого html дом - PullRequest
0 голосов
/ 28 апреля 2020

ТАК Я использую simple html dom , чтобы прочитать все идентификаторы из моей таблицы.

Мои таблицы выглядят так:

<table><a name="Module-277409-Start_5f7bad2c-10af-4c88-afaf-6c960be2f547"></a><a name="Module-277409-Start"></a><span class="text_class2"><span>ID</span></span></td><td class="table_class4DeffCell cell_class9 cell_class8"><span class="text_class2"><span>Primary Text</span></span></td><td class="table_class4DeffCell cell_class11 cell_class10"><span class="text_class2"><span>SystemFeatures</span></span></td><td class="table_class4DeffCell cell_class13 cell_class12"><span class="text_class2"><span>Area of Relevance</span></span></td></tr><tr class="row_class14"><td class="table_class4DeffCell cell_class7 cell_class15"><a class="hyperlink_class16" href="">1</a></td><td class="table_class4DeffCell cell_class9 cell_class15"><span class="text_class2"><h1 class="paragraph_class17 1"><span>XXXXX</span></h1></span></td><td class="table_class4DeffCell cell_class11 cell_class15"><span class="text_class2"><span>XXXX</span></span></td><td class="table_class4DeffCell cell_class13 cell_class15"><span class="text_class2"><span>HEADING</span></span></td></tr><tr class="row_class14"><td class="table_class4DeffCell cell_class7 cell_class15"><a class="hyperlink_class18" href="">2</a></td><td class="table_class4DeffCell cell_class9 cell_class15"><span class="text_class2"><h2 class="paragraph_class19 2"><span>XXXXXX</span></h2></span></td><td class="table_class4DeffCell cell_class11 cell_class15"><span class="text_class2"><span>XXXX</span></span></td><td class="table_class4DeffCell cell_class13 cell_class15"><span class="text_class2"><span>XXXX</span></span></td></tr><tr class="row_class14"><td class="table_class4DeffCell cell_class7 cell_class15"><a class="hyperlink_class20" href="">3</a></td><td class="table_class4DeffCell cell_class9 cell_class15"><span class="text_class2"><p class="paragraph_class21"><span class="paragraph_class21 text_class22">xxxxx</span></p></span></td><td class="table_class4DeffCell cell_class11 cell_class15"><span class="text_class2"><span>XXXXXX</span></span></td><td class="table_class4DeffCell cell_class13 cell_class15"><span class="text_class2"><span>SW</span></span></td></tr><tr class="row_class14"><td class="table_class4DeffCell cell_class7 cell_class15"><a class="hyperlink_class23" href="">4</a></td><td class="table_class4DeffCell cell_class9 cell_class15"><span class="text_class2"><p class="paragraph_class21"><span class="paragraph_class21 text_class22">XXXXX</span></p></span></td><td class="table_class4DeffCell cell_class11 cell_class15"><span class="text_class2"><span>xxxxx</span></span></td><td class="table_class4DeffCell cell_class13 cell_class15"><span class="text_class2"><span>SW</span></span></td></tr>
</table>
<table><a name="Module-277409-Start_5f7bad2c-10af-4c88-afaf-6c960be2f547"></a><a name="Module-277409-Start"></a><span class="text_class2"><span>ID</span></span></td><td class="table_class4DeffCell cell_class9 cell_class8"><span class="text_class2"><span>Primary Text</span></span></td><td class="table_class4DeffCell cell_class11 cell_class10"><span class="text_class2"><span>SystemFeatures</span></span></td><td class="table_class4DeffCell cell_class13 cell_class12"><span class="text_class2"><span>Area of Relevance</span></span></td></tr><tr class="row_class14"><td class="table_class4DeffCell cell_class7 cell_class15"><a class="hyperlink_class16" href="">1</a></td><td class="table_class4DeffCell cell_class9 cell_class15"><span class="text_class2"><h1 class="paragraph_class17 1"><span>XXXXX</span></h1></span></td><td class="table_class4DeffCell cell_class11 cell_class15"><span class="text_class2"><span>XXXX</span></span></td><td class="table_class4DeffCell cell_class13 cell_class15"><span class="text_class2"><span>HEADING</span></span></td></tr><tr class="row_class14"><td class="table_class4DeffCell cell_class7 cell_class15"><a class="hyperlink_class18" href="">2</a></td><td class="table_class4DeffCell cell_class9 cell_class15"><span class="text_class2"><h2 class="paragraph_class19 2"><span>XXXXXX</span></h2></span></td><td class="table_class4DeffCell cell_class11 cell_class15"><span class="text_class2"><span>XXXX</span></span></td><td class="table_class4DeffCell cell_class13 cell_class15"><span class="text_class2"><span>XXXX</span></span></td></tr><tr class="row_class14"><td class="table_class4DeffCell cell_class7 cell_class15"><a class="hyperlink_class20" href="">3</a></td><td class="table_class4DeffCell cell_class9 cell_class15"><span class="text_class2"><p class="paragraph_class21"><span class="paragraph_class21 text_class22">xxxxx</span></p></span></td><td class="table_class4DeffCell cell_class11 cell_class15"><span class="text_class2"><span>XXXXXX</span></span></td><td class="table_class4DeffCell cell_class13 cell_class15"><span class="text_class2"><span>SW</span></span></td></tr><tr class="row_class14"><td class="table_class4DeffCell cell_class7 cell_class15"><a class="hyperlink_class23" href="">4</a></td><td class="table_class4DeffCell cell_class9 cell_class15"><span class="text_class2"><p class="paragraph_class21"><span class="paragraph_class21 text_class22">XXXXX</span></p></span></td><td class="table_class4DeffCell cell_class11 cell_class15"><span class="text_class2"><span>xxxxx</span></span></td><td class="table_class4DeffCell cell_class13 cell_class15"><span class="text_class2"><span>SW</span></span></td></tr>
</table>

Вот мой код, где я нахожу идентификаторы:

$html = file_get_html('../Test/reqID/htmlfileID.html');

$table = $html->find('table');

foreach($table->find('tr') as $row) {
    if (is_numeric($row->find('td',0)->plaintext)) {
        $reqIDs[] = $row->find('td',0)->plaintext; 
    }         
} 

Здесь есть фрагмент экрана. html, открытый в chrome: html from chrome

Почему я могу получать идентификаторы только с первого стола, а не с других? У меня 25 столов с идентификаторами. Все идентификаторы - это первый столбец в каждой таблице, или, как и я, найдите каждую таблицу и найдите первое значение цифры c в td.

РЕДАКТИРОВАТЬ:

Спасибо, ребята,

Почему-то это остановилось почти в конце таблицы 4 сейчас? у меня все еще осталось 10 столов? Существует много идентификаторов.

Вот так выглядят мои таблицы, и у меня есть много div с новыми таблицами в них. table

Также, когда я делаю sizeof ($ table), он говорит, что найдено 9 таблиц. но у меня есть 30? enter image description here

1 Ответ

1 голос
/ 28 апреля 2020

Второй параметр, переданный методу find() в строке $table = $html->find('table',0);, сообщает этому методу, что он должен возвращать только первый найденный элемент (второй аргумент - это индекс элемента в массиве результатов), поэтому вы в основном запрашиваете find способ вернуть только первую таблицу. Чтобы избежать этого, вам нужно пропустить второй параметр. Как то так:

$html = file_get_html('../Test/reqID/htmlfileID.html');

// $tables will be an array of all found tables
$tables = $html->find('table');

// you will need to also loop over all tables
foreach ($tables as $table) {
    foreach($table->find('tr') as $row) {
        if (is_numeric($row->find('td',0)->plaintext)) {
            $reqIDs[] = $row->find('td',0)->plaintext; 
        }         
    } 
}
...