Быстродействие regexp @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 5 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
SadMan
новый человек
0
Сообщения: 25
Зарегистрирован: 29.11.02
Откуда: Saint-Petersburg
Заголовок сообщения: Быстродействие regexp
Сообщение Добавлено: 6 Февраль 2004, 16:28:42 
Возникла проблема с быстродействием регулярных выражений в Perl.
Может кто поделится опытом как написать наиболее быстрый вариант?
Задача состоит в следующем, нужно в тексте заменять строку вида [img1 width=10 height=10] на <img src="/photos/100-1.jpg" width="10" height="10">, причем width=10 и height=10 может и не быть.
Я делал так:
Код:
$text =~ s/(\[img)(\d+)(\s|\n)?(.*)(\])/<img src=\"\/photos\/$id-$2\.jpg\" $4>/igm;


Я понимаю что это не самы удачный вариант. Как сделать лучше?
Да, размер $text может доходить до 65Кб.
Спасибо.

_________________
WBR, SadMan
@TSV
постоянный участник
11
Сообщения: 4736
Зарегистрирован: 08.05.03
Сообщение Добавлено: 6 Февраль 2004, 16:44:32 
SadMan, в данной ситуации нужно просто обходиться вообще без regexp. Серьезно. А просто сделать принудительно заменой одних подстрок на другие. И всё. :gent:
SadMan
новый человек
0
Сообщения: 25
Зарегистрирован: 29.11.02
Откуда: Saint-Petersburg
Сообщение Добавлено: 6 Февраль 2004, 17:21:46 
Это как? :confused: Что значит: принудительно заменой одних подстрок на другие

_________________
WBR, SadMan
@TSV
постоянный участник
11
Сообщения: 4736
Зарегистрирован: 08.05.03
Сообщение Добавлено: 6 Февраль 2004, 17:32:46 
SadMan, Это значит:
1. Функцией разбить длинную строку на массив строк, разрезав её по характерной подстроке, "[img" к примеру.
2. Прогнать собственно по этому массиву цикл замены.
3. Внутри цикла принудительно ручками искать нужные подстроки, и заменять:
- "[img1" => "<img src=/photos/100-1.jpg", циферку ручками определить
- width и height можно вообще не заменять, они и без кавычек хороши. :)
- "]" аккуратненько на ">", чтобы текст не попортить
4. Склеить массив обратно в строку, а можно и не клеить.
5. Плюнуть массивом или строкой в посетителя сайта. :laugh:

:gent:
Идея в том, чтобы не гонять обработку регулярных выражений на длинных строках. Эта операция действительно время жрет очень сильно.
404 Муж.
новый человек
0
Сообщения: 114
Зарегистрирован: 26.11.02
Откуда: Санкт-Петербург
Сообщение Добавлено: 6 Февраль 2004, 18:43:28 

Цитата:
они и без кавычек хороши


Хороши, да не очень. Лучше ставить в кавычках для соответствия со спецификацией xhtml.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 5 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100