Автор Тема: Срочно нужна помощь  (Прочитано 4092 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Abram

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 116
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Срочно нужна помощь
« : 17 Февраля 2004, 11:33:51 »
Братки! Помогите! Мне не хватает знаний, а очень нужно сделать вот что.
Есть html прайс с такой структурой:

......

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


   

      
         
      

            

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


         

   


<-2->


   

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

   


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


Читал про регулярные выражения, мощная штука. Да чтоб разобраться нужно чтоб кто-то грамотный объяснил как ето работает.
Алгоритм интуитивно чувствую: считываем файл, а потом в масив "колбасим" по 2 части с
, а потом уже отдельные части, но как это записать "РЕГУЛЯРНО"?
Может как-то по другому можно, подскажите плз, время жмет.

Оффлайн Abram

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 116
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Язык написания PHP4, забыл однако

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
ИМХО здесь проще будет через preg_split() разбить прайс на массив по строке
<-1->

и потом работать в цикле с каждым элементом массива (кроме первого элемента - там будет "шапка" прайса)
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Abram

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 116
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Спасиб Макс за ответ, но тут еще такие рассуждения:
Нужно еще чтобы разбор прайса был быстрым, так как он очень большой, много фирм, большой асортимент товара. Я слышал, что регулярные выражения работают очень быстро. Мне нужен самый оптимальный вариант

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Abram
все зависит от того, как ты напишешь регулярное выражение, сколько текста надо отпарсить.
работа в Украине

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Цитировать
Abram:
Я слышал, что регулярные выражения работают очень быстро

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

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

Если будет тормозить, то можно будет написать без регов, только с использованием строков функций ([p]substr[/p], [p]strpos[/p])
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Abram

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 116
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ну я понял принцип, разберусь дальше, ну а так для опыта регами как надо было бы писать?
Хотя бы коротко структуру програмы можешь написать?

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
примерно так (после разбивки explode-ом на массив):

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

получить список товаров и цены
/(?:)([^<>]+?)(?:<\\/td>)(\\d+)(?:<\\/td>)(\\d+)(?:<\\/td>)/s
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
тут в реги форум лишние пробелы повставлял :(
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28