Таблица в массив на php
Задача: Есть некая очень захламленная сторонними элементами страница в разметке html. Необходимо преобразовать находящуюся на ней таблица в массив данных.
Решение: сначала вычленим «грязное» содержимое таблицы между тегами <tbody></tbody>, затем преобразуем его в DOM документ, а далее уже распарсим его обходами и разложим элементы в массив.
Получилось что-то вроде:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//вычленяю таблицу $t1=explode("<tbody>",$res); $t2=explode("</tbody>",$t1[1]); $tbody="<html><head><meta charset='UTF-8'></head><body><table><tbody>".$t2[0]."</tbody></table></body></html>"; $mass=[]; $dom = new domDocument('1.0', 'utf-8'); @$dom->loadHTML($tbody); $tables= $dom->getElementsByTagName('table'); foreach ($tables as $table) { $trs= $table->getElementsByTagName('tr'); foreach ($trs as $tr) { $tds=$tr->getElementsByTagName('td'); $info=[]; foreach ($tds as $td) { $info[]=$td->textContent; }; $mass[]=$info; } } |