Таблицу html занести в БД

F
На сайте с 06.02.2012
Offline
138
854

Новичок в php.

Есть таблица html. Необходимо перенести данные в БД mysql в соответствии со штатными ячейками (td.tr)

Три колонки и около тысячи строчек. В одной колонке текст с тегами и знаками препинания нужно сохранить как есть.

Пробовал конвертировать в EXCEL по рекомендациям из инета..

header('Content-Type: application/vnd.ms-excel');

header('Content-type: application/x-msexcel');

$fileName = 'test.xls';

header("Content-Disposition: attachment; filename=$fileName");

Дробит ячейки не только по штатным тегам таблицы, а ещё по строчкам или тегам <br>.. так и не понял логики работы такого скрпта.

Онлайн-сервисы предлагающие конвертировать html в csv тоже не дали нужного результата, буржуйские половина теги в тексте убирают, другие кодировку не учитывают.. из русских ничего не нашёл работоспособного.

Как правильнее поступить? Может есть накатанные решения?

Может и не нужно конвертировать из сразу скриптом и ячеек таблицы в БД заностить как-то можно хитро?

FixTheWeb
На сайте с 29.09.2014
Offline
10
#1

Нужен пхп скрипт, который регекспом вытащит нужные данные и запихнет в базу, также можно xpath попробывать.

DV
На сайте с 01.05.2010
Offline
644
#2

Разбейте на этапы.

Разобрать по ячейкам получается?

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
F
На сайте с 06.02.2012
Offline
138
#3
DenisVS:
Разобрать по ячейкам получается?

А чем разобрать?

В самой таблице html всё ровно разобрано. Все ячейки на месте.

DV
На сайте с 01.05.2010
Offline
644
#4

Я к тому, получается ли выделить данные из произвольной ячейки?

F
На сайте с 06.02.2012
Offline
138
#5

Плохо понимаю вопрос, что значит выделить..

---------- Добавлено 29.09.2014 в 22:55 ----------

FixTheWeb:
вытащит нужные данные

У меня все данные нужные.

Столбцы пометил в тегах td идентификатором, когда обрабатывал таблицу.

Структура такая, три столбца:

<tr><td id=brand>....</td><td id=model>....</td><td id=opisanie>....</td></tr>

и таких строчек много.

В ячейках "opisanie" текст с тегами и ссылками.

Как правильно написать скрипт?

M
На сайте с 15.03.2012
Offline
128
#6

fordzon, необходимо с помощью регулярных выражений выделить в массив все строки (<tr..)

затем циклом идти по этому массиву и разбить каждую строку на 3 ячейки (также с помощью регулярных выражений) и insert-ить это дело уже в базу

DV
На сайте с 01.05.2010
Offline
644
#7

Как бы специальные библиотеки позволяют без велосипедирования.

F
На сайте с 06.02.2012
Offline
138
#8

С библиотеками не умею работать.

А с массивами уже получается.

Сделал три массива регулярками

$content=preg_match_all('/<td id=brand>(.+?)<\/td>|sUSi/', $content, $arr1);

$content=preg_match_all('/<td id=models>(.+?)<\/td>|sUSi/', $content, $arr2);

$content=preg_match_all('/<td id=opisanie>(.+?)<\/td>|sUSi/', $content, $arr3);

Всё нормально, данные разделились.

Ну и тремя циклами foreach инсертить в БД. Должно получиться.

Спасибо!

_
На сайте с 24.03.2008
Offline
381
#9

Экселем разберите...

F
На сайте с 06.02.2012
Offline
138
#10
_SP_:
Экселем разберите...

Экселем не получалось, по строчкам ячейки дробит, а мне по штатным тегам td нужно.

Всё оказалось просто.

$content1=preg_match_all('/<td id=brand>(.+?)<\/td>|sUSi/', $content, $arr1);

$content2=preg_match_all('/<td id=models>(.+?)<\/td>|sUSi/', $content, $arr2);

$content3=preg_match_all('/<td id=over>(.+?)<\/td>|sUSi/', $content, $arr3);

$ar1= $arr1[1];

$ar2= $arr2[1];

$ar3= $arr3[1];

for($i = 1; $i < 1000; $i++)

{

$result = mysql_query ("INSERT INTO tab1 (brand,models,over) VALUES ('$ar1[$i]', '$ar2[$i]','$ar3[$i]')");

}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий