Какой самый быстрый способ конвертировать HTML-таблицу в массив PHP? - PullRequest
3 голосов
/ 24 августа 2010

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

Ответы [ 6 ]

7 голосов
/ 24 августа 2010

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

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

1 голос
/ 24 августа 2010

Альтернативой использованию собственного 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 фактически ссылается на API YQL, добавляет некоторые опции и содержит запрос:

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

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

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

1 голос
/ 24 августа 2010

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

0 голосов
/ 24 августа 2010

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

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

0 голосов
/ 24 августа 2010

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

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

0 голосов
/ 24 августа 2010

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

см .: php explode

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