Простой парсер таблицы в массив из HTML
Задача: необходимо преобразовать страницу HTML, в которой данные размещены в виде стандартной таблицы обрамленной тегами <table></table>, в двумерный массив на PHP (парсер таблицы в массив).
| 1 2 3 4 5 6 7 8 | <table> 	<tr> 		<td>1</td><td>2</td><td>3</td><td>4</td> 	</tr> 	<tr> 		<td>1</td><td>2</td><td>3</td><td>4</td> 	</tr> </table> | 
Сначала я хотел решить задачу «в лоб», а именно искать теги в тексте, писать функционал по вычленению данных между тегами.. Но потом подумал, что «наверное всё уже придумано до нас», для подобных задач. Ну и собственно оказался прав. Задачу решил без лишних усилий в течении минут 5.
Решение: воспользуюсь PHP функцией DOMDocument для того чтобы преобразовать текст в DOM объект:
| 1 2 3 |     $contents = '<html lang="ru-RU"><head><meta charset="UTF-8" /></head><table>'.$contents."</table></html>";     $DOM = new DOMDocument;     $DOM->loadHTML($contents); | 
Так я получаю построенное DOM дерево. Затем получаю все «ветки» по имени tr, и перебираю их, одновременно перебирая «всех листья» (т.е. тэги td):
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function tdrows($elements){   $str = [];     foreach ($elements as $element) {$str[]= $element->nodeValue;}   return $str; } function getdata($contents){     $contents = '<html lang="ru-RU"><head><meta charset="UTF-8" /></head><table>'.$contents."</table></html>";     $DOM = new DOMDocument;     $DOM->loadHTML($contents);     $items = $DOM->getElementsByTagName('tr');     $mass=[];     foreach ($items as $node) {         $mass[]=tdrows($node->childNodes);     }     return $mass; } $mass=getdata($table); var_dump($mass); | 
Данные я передал в двухмерный массив $mass, т.е. задача «парсер таблицы в массив» решена

Ну а тут ссылка на подобную же задачу, но вместо HTML документа — файл формата XML