Forum Webscript.Ru

Программирование => Perl => Тема начата: AlexRH от 04 Ноября 2003, 15:03:08

Название: Подскажите, pls, как организовать поиск по нескольким полям формы.
Отправлено: AlexRH от 04 Ноября 2003, 15:03:08
Имеется текстовый файл с разделителями.
Имеется скрипт который ищет в  $_ все, что ввели в поле формы.
Не могут понять, как сделать поиск по нескольким|всем полям.

Подскажите, pls.
Название: Подскажите, pls, как организовать поиск по нескольким полям формы.
Отправлено: NeoNox от 04 Ноября 2003, 15:30:02
Где ищет? В файле с разделителями?
Цитировать
AlexRH:
Имеется скрипт который ищет в $_ все, что ввели в поле формы.

Давайте говорить о том о чем имеем понятие. Специальная переменная это иллюзия в твоем вопросе.
Цитировать
AlexRH:
Не могут понять, как сделать поиск по нескольким|всем полям.

разбить на слова
perldoc -f split
и искать по каждому элемента массива.
Название: Подскажите, pls, как организовать поиск по нескольким полям формы.
Отправлено: AlexRH от 04 Ноября 2003, 16:05:55
Цитировать
NeoNox:
Где ищет? В файле с разделителями?

Да, открываю файл и считываю по строкам.
Затем разбиваю split\'ом.

Цитировать
NeoNox:
разбить на слова
и искать по каждому элемента массива.


Какого?
Название: Подскажите, pls, как организовать поиск по нескольким полям формы.
Отправлено: Chs от 04 Ноября 2003, 17:08:13
Цитировать
Какого?

Полученного в результате split.
Название: Подскажите, pls, как организовать поиск по нескольким полям формы.
Отправлено: NeoNox от 04 Ноября 2003, 17:27:36
Даю наводку:
$stroka это содержимое файла
$zapros это строка запроса
$s_string = (join \'|\', (split / /, $zapros));
print "Найдено!\\n" if ($stroka =~ /$s_string/);

$ perl -de0

  DB<1> $stroka = "Oh yeah 2"
  DB<2> $zapros = "eah no"
  DB<3> $s_string = (join \'|\', (split / /, $zapros));
  DB<4> print "Найдено!\\n" if ($stroka =~ /$s_string/);
Найдено!

Это если по любому из слов в запросе. А если искать все вместе слова то еще проще:
$ perl -de0

  DB<1> $stroka = "Oh yeah 2"
  DB<2> $zapros = "eah no"
  DB<3> $s_string = $zapros;
  DB<4> print "Найдено!\\n" if ($stroka =~ /$s_string/);
Название: Подскажите, pls, как организовать поиск по нескольким полям формы.
Отправлено: AlexRH от 12 Ноября 2003, 12:25:36
Спасибо тем, кто откликнулся.
Извиняюсь, что с запозданием возвращаюсь к обсуждению, но хотелось бы продолжить.

Как мне создать $zapros из нескольких полей формы?

use CGI qw(:all);
$q =new CGI;
$f1=$q->param(\'f1\');
$f2=$q->param(\'f2\');
$f3=$q->param(\'f4\');

$zapros=(join \'|\', ($f1, $f2, $f3));
Название: Подскажите, pls, как организовать поиск по нескольким полям формы.
Отправлено: NeoNox от 12 Ноября 2003, 12:57:37
Именно так.
Или f1 или f2 или f4.
В чем трудность?
Название: Подскажите, pls, как организовать поиск по нескольким полям формы.
Отправлено: AlexRH от 12 Ноября 2003, 14:42:51
Собственно нет никаких трудностей. Я просто уточнить хотел.