Я снова застрял.
У меня есть строка поиска и я назначил ее переменной:
my $search = 'foo bar blue widget'
$search =~ s/[\n\r]+|^\s+|\s+$//g; #remove leading and trailing spaces n stuff
Я использовал
SELECT FROM `sometable` WHERE `coltosearch` LIKE '%$search%'
Но, будет лисоответствует только "foo bar blue widget" ИЛИ "foo".
Я тоже хочу сопоставить "foo bars" или "foobar".
Итак, я думаю, что мне придется сделать:
my $search = 'foo bar blue widget';
$search =~ s/[\n\r]+|^\s+|\s+$//g; #remove leading and trailing spaces n stuff
my $search1 = $search;
$search1 =~ s/^\s+|\s+$|\s*//g; #remove all spaces
SELECT FROM `sometable` WHERE `coltosearch` LIKE '%$search%' OR LIKE '%$search1%'
Ну, это может быть хорошо для "foo bar blue widget" и "foobarbluewidget".(если это сработало)
Итак, я предполагаю, что мне придется пройтись по $ search и назначить переменные для каждого слова.
Но я никогда не знаю, сколько слов у меня будет в$ search.
Итак, я застрял.Могу ли я сделать что-то вроде:
my $search = 'foo bar blue widget'; #in from search form. Actually a $var
$search1 =~ s/^\s+|\s+$|\s*//g; #remove all spaces
$search1 = "%$search1%"; # Makes %foobarbluewidget%
## Now make individual words somehow ##
my @searcharry;
my $cnt='0';
my $searchword;
my @searchsplit = $search;
while $searchword (@searchsplit){
push (@searcharry,$searchword[$cnt]);
$cnt++;
}
Но как мне получить @searcharry в:
$search =~ s/\s/%/gi;
$search =~ s/%%/%/gi; #I think makes %foo%bar%blue%widget%
Так что я могу:
SELECT FROM `sometable` WHERE `coltosearch` LIKE '$search' OR LIKE '$search1'
Я, вероятно, способвне базы.Это действительно сложно для меня.Я просто хочу сопоставить любые слова в строке поиска или сопоставить, если все слова объединены.
Извините за то, что я такой нуб.Я считаю, что моя грубая попытка - оскорбление Perl и настоящих программистов.
Спасибо за любую помощь.