RegExp для строки поиска

cybersage

Новичок
RegExp для строки поиска

Весь поиск перерыл, но что-то не нашёл.

Задача: есть строка поиска, пользователь вводит запрос нажимает "Найти", запрос передаётся в обработчик. Сложность в том, что запрос может выглядеть так:

"regular expression" keyword parse

Т.е. в одном запросе могут быть как и отдельные ключевые слова, так и ключевые фразы (в кавычках).

Какой самый оптимальный способ разделять ключевые слова и фразы (которые могут быть заключены в одинарные или двойные кавычки. При этом учитывать разницу между побочным использованием кавычек (например - 15.4"Wide).

После обработки должно получаться что-то вроде этого:

[0] => regular expression
[1] => keyword
[2] => parse

Ну или хотя бы ссылками ткните.
 
cybersage
а как поиск работать должен если будет примеру
15" слово "слово сочетание"
?
 
Автор оригинала: LeFF®
cybersage
а как поиск работать должен если будет примеру
15" слово "слово сочетание"
?
ну ладно, погорячился. беруться только фразы внутри кавычек, фиг с ними с дюймами :)
 
внутри каких кавычек?
этих
15" слово "слово сочетание"
или
15" слово "слово сочетание"
этих?
 
вообще лучше всего для таких целей обычный парсер написать, для пробега по строке с условиями конца слова или нескольких слов:
Если встречается ' то записывать в текущую подстроку пока не встретишь '
так же и с остальным

такую ф-ию можно сделать с параметрами

$str = строка по которой будет произведен поиск
$eol = список символов на которых будет начинаться предложение и оканчиваться list('\'', '"', ' ');


parseSearchQuery( $str, $eol)
{
$out;
// а над логикой подумай, она совсем не сложная ))

return $out;

}
 
Сверху