![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
![]()
Всем привет!
Есть админка для интернет магазина, нужно слить туда инфу из другого и добавить все в БД. Информация представлена в виде таблиц (table,tr,td c классами и другими атрибутами) Нужен парсер (preg_match_all). Я все продумал вплоть до построения MySQL-запросов через два цикла foreach: первый результат - содержимое строчек, второй - содержимое ячеек. Вся проблема в том, что у меня не получается составить регулярные выражения - из-за атрибутов тегов, переносов строк и т.д. Помогите пожалуйста составить регулярки на получение содержимого тегов <tr></tr> и <td></td>, которые могут быть представлены по разному: <tr class="thTr" >Содержимое</tr> <td valign="middle" class="thTd" align="center" >Содержимое</td> и т. д. Буду очень благодарен! |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
![]() |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
![]()
Хорошая библиотека, не знал о ней. Но я хочу все сам сделать, мне только с регулярками разобраться, я поэтому и обратился сюда.
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
![]() Цитата:
![]() Если нужно распарсить быстро и просто – юзай Simple HTML DOM Parser. Охота возиться с регулярками – изучай. Функции парсинга web-страниц |
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
![]()
Да распарсить - это не проблема, у меня просто не получаются регулярки, я вчера всю ночь просидел, пытался составить, прочитал уже много литературы, но всегда где то ошибки есть.
Например хочу взять все строчки: preg_match_all("/<tr[^>]*>(.*)<\/tr>/",$table,$rows); Но получается только один результат, видимо он взял самый первый и самый последний. Я до сих пор не могу понять как в конструкции (.*) указать, что не нужно трогать </tr> |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,184
|
![]()
... кстати двойной цикл - неверно .. по сути одна строка - одна запись в таблице БД (с нужными полями)
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
![]()
База данных уже давно готова, я не собираюсь ее менять - и так все прекрасно работает.
Люди, неужели никто не может помочь? |
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Регулярки - вещь, несколько напоминающая тензоры или аналогичные вещи, так что тут нужно терпение, усидчивость, кофе и желание.
Если же нужно написать быстро парсер, я пользуюсь explode. И любой парсер можно сделать быстро. |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]() Код:
Код:
Код:
Во многих случаях действительно они помогают что-то сделать проще, есть готовые варианты. Зато старый добрый explode любую вещь вынет из кода, и код этот пишется быстро и автоматически. Если есть время и возможность, можно параллельно изучать и регулярки. Последний раз редактировалось motorway; 17.08.2012 в 19:49. |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 17.01.2010
Сообщений: 277
|
![]()
Я не просто так стал использовать регулярки. Дело в том, что парсер должен быть универсальным, потому что очень много различных таблиц.
И еще на этот парсер у меня есть планы в будущем. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Получение координат точки. | ТриСемёрки | C++ Builder | 3 | 15.12.2011 15:08 |
получение координат пикселя с заданным цветом | JIM88 | Общие вопросы Delphi | 8 | 21.02.2011 11:59 |
WPF Получение 2D координат 3D вектора | Eugene123 | WPF, UWP, WinRT, XAML | 0 | 09.10.2010 20:15 |
Получение координат точки. | ТриСемёрки | Помощь студентам | 0 | 21.05.2010 21:35 |
Получение координат точек касательной к окружности | Stilet | Помощь студентам | 2 | 01.08.2008 15:12 |