Каков самый быстрый способ преобразования таблицы html в php-массив?

существуют ли функции в последних версиях php, специально разработанных для помощи в этой задаче?

Используйте парсер DOM, например SimpleXML, чтобы разбить код HTML на узлы и пройти через узлы, чтобы построить массив.

Для сломанного / недействительного HTML, SimpleHTMLDOM более мягкий (но он не встроен).

String replace and explode будет работать, если HTML-код будет чистым и всегда будет таким же, как только у вас появятся новые атрибуты, он будет тормозить. Таким образом, только надежное решение будет использовать регулярные выражения или парсер XML / HTML. Проверьте http://php.net/manual/en/book.dom.php

Альтернативой использованию собственного DOM-анализатора может быть использование YQL . Таким образом, вам не нужно выполнять собственно анализ. Веб-служба YQL позволяет приложениям запрашивать, фильтровать и комбинировать данные из разных источников через Интернет.

Например, чтобы захватить таблицу HTML с примером класса, приведенным в

http://www.w3schools.com/html/html_tables.asp 

ты можешь сделать

 $yql = 'http://tinyurl.com/yql-table-grab'; $yql = json_decode(file_get_contents($yql)); print_r( $yql->query->results ); 

Я решил сократить URL-адрес, чтобы он не испортил ответ. $yql фактически ссылается на YQL API, добавляет некоторые параметры и содержит запрос:

 select * from html where xpath="//table[@class='example']" and url="http://www.w3schools.com/html/html_tables.asp" 

YQL может возвращать JSON и XML. Я заставил его вернуть JSON и затем декодировать это, что приводит к вложенной структуре объектов stdClass и массивов (так что это не все массивы). Вы должны убедиться, что это соответствует вашим потребностям.

Вы проверите интерактивную консоль YQL, чтобы узнать, как она работает .

Я не знаю, если это быстрее, но вы можете проверить этот класс (используя preg_replace)

http://wonshik.com/snippet/Convert-HTML-Table-into-a-PHP-Array

Если вы хотите преобразовать html-описание таблицы, вот как бы я это сделал:

Вам нужно самостоятельно разобраться с деталями, так как я не знаю, хотите ли вы обрабатывать разные строки в качестве подмассивов или вы хотите объединить все строки в один большой массив или что-то еще.

вы можете использовать функцию explode, чтобы превратить таблицы cols и rows в массивы.

см .: php explode