Forum Webscript.Ru

Программирование => Регулярные выражения => Тема начата: Abram от 17 Февраля 2004, 11:33:51

Название: Срочно нужна помощь
Отправлено: Abram от 17 Февраля 2004, 11:33:51
Братки! Помогите! Мне не хватает знаний, а очень нужно сделать вот что.
Есть html прайс с такой структурой:

......

<---TOP--->
<--KONTENT-->
<-1->


   

      
         
      

            

Фирма "АЛЕКС"


         

   


<-2->


   

      
         ...
         
         .................      
      
Название товараЦена1Цена2
Мороженое45342

   


........
Дальше в такой же последовательности <-1-><-2-> 10 видов фирм со списком продукции
Нужно в результате работы скрипта получить базу данных:
Таблица 1.  Код фирмы   Мороженое   45   342   ...
..........
Таблица2  Код фирмы   Название фирмы
<--/KONTENT-->
<---BOTTOM--->


Читал про регулярные выражения, мощная штука. Да чтоб разобраться нужно чтоб кто-то грамотный объяснил как ето работает.
Алгоритм интуитивно чувствую: считываем файл, а потом в масив "колбасим" по 2 части с
, а потом уже отдельные части, но как это записать "РЕГУЛЯРНО"?
Может как-то по другому можно, подскажите плз, время жмет.
Название: Парсинг html страницы с ценами товаров и названиями фирм
Отправлено: Abram от 17 Февраля 2004, 11:47:04
Язык написания PHP4, забыл однако
Название: Парсинг html страницы с ценами товаров и названиями фирм
Отправлено: Макс от 17 Февраля 2004, 12:25:15
ИМХО здесь проще будет через preg_split() разбить прайс на массив по строке
<-1->

и потом работать в цикле с каждым элементом массива (кроме первого элемента - там будет "шапка" прайса)
Название: Парсинг html страницы с ценами товаров и названиями фирм
Отправлено: Abram от 17 Февраля 2004, 12:39:06
Спасиб Макс за ответ, но тут еще такие рассуждения:
Нужно еще чтобы разбор прайса был быстрым, так как он очень большой, много фирм, большой асортимент товара. Я слышал, что регулярные выражения работают очень быстро. Мне нужен самый оптимальный вариант
Название: Парсинг html страницы с ценами товаров и названиями фирм
Отправлено: Yukko от 17 Февраля 2004, 12:45:16
Abram
все зависит от того, как ты напишешь регулярное выражение, сколько текста надо отпарсить.
Название: Парсинг html страницы с ценами товаров и названиями фирм
Отправлено: Макс от 17 Февраля 2004, 12:45:55
Цитировать
Abram:
Я слышал, что регулярные выражения работают очень быстро

если правильно напишешь - то будут работать быстро.
Вообще я стормозил можно и простым explode-ом рабить на массив.

Не понимаю, зачем нужен оптимальный вариант, ведь прайс заливается в БД не каждую минуту.

Если будет тормозить, то можно будет написать без регов, только с использованием строков функций ([p]substr[/p], [p]strpos[/p])
Название: Парсинг html страницы с ценами товаров и названиями фирм
Отправлено: Abram от 17 Февраля 2004, 16:07:50
Ну я понял принцип, разберусь дальше, ну а так для опыта регами как надо было бы писать?
Хотя бы коротко структуру програмы можешь написать?
Название: Парсинг html страницы с ценами товаров и названиями фирм
Отправлено: Макс от 17 Февраля 2004, 16:33:25
примерно так (после разбивки explode-ом на массив):

получить название фирмы:
/(?<=\\)[^<]+?(?=\\<\\/H2\\>)/s

получить список товаров и цены
/(?:)([^<>]+?)(?:<\\/td>)(\\d+)(?:<\\/td>)(\\d+)(?:<\\/td>)/s
Название: Парсинг html страницы с ценами товаров и названиями фирм
Отправлено: Макс от 17 Февраля 2004, 16:34:43
тут в реги форум лишние пробелы повставлял :(