Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Ухх... 19.03.06 21:48 Число просмотров: 2957
Автор: Heller <Heller> Статус: Elderman
|
> Пишу поиск по сайту, где данные хранятся в пресловутых > текстовиках. Поиск основан, естественно, на регулярных Нагрузка при этом огромна однако.
> выражениях. Так вот, когда пытаешься найти символ '[', в > error.log пишется: "[Sun Mar 19 17:54:06 2006] [error] > [client 127.0.0.1] Unmatched [ in regex; marked by <-- > HERE in m/"[ <-- HERE "/ at modules/search.pl line > 70.\n". Поэтому, я думаю, этот символ надо "обрезать", т.к. > он приводит к ненормальной работе движка.
> > Я хотел у вас спросить, какие символы ещё стоит "обрезать", > как обезопасить свой поиск и сделать, чтобы он не нарушал > работу портала? ИМХО вопрос поставлен несовсем корректно. Я бы на твоем месте думал не о том "что обрезать", а о том, "что разрешить". Проверка должна быть такой:
if ($search_line!~/^[\w\d\s]+$/) {fuck_off()}
Если пишешь какой-нибудь синтаксический анализатор, добавь в этот класс необходимые символы (запятые, точки и т. д.).
А вообще делать такой поиск по текстовикам - крайне неразумная вещь. Значительно падает и эффективность и функциональность. Применение хоть какого-то индексирования обязательно, а лучше не "какого-то" а деревья. В крайнем случае готовых поисковых движков в сети с избытком валяется (хотя можно воспользоваться уже готовым сервисом типа Google, который отлично встраивается в любой сайт; слышал так же, что специальный движок предлагает Яндекс, но подробностей не знаю).
|
|
|