Создание булевской логики поиска
Необходимо чтобы юзер сам мог создавать запрос (н-р a & b & ^ c), + можно группировать скобками, а также разрешить % и _.
Есть ли какие-либо примеры его создания, я сам пробовал написать, но застревал на некоторых местах..
Если кратко то вот у меня вышло
PHP код:
Код:
// Убираем пробелы со сторон, затем двойные пробелы, проверку на sql-inj я опустил
$string = trim(str_replace(array(' & ', ' | ', ' ^ ', ' '), array(' AND '.$field.' LIKE ', ' OR '.$field.' LIKE ', ' NOT LIKE ', ' '), @$_REQUEST[$field]));
// Здесь убираем ситуацию когда в запросе встречается нечто вроде a & ^ d (а И НЕ d)
$string = str_replace('LIKE NOT LIKE', 'NOT LIKE', $string);
$string = trim(str_replace(array(' & ', ' | ', ' ^ ', ' '), array(' AND '.$field.' LIKE ', ' OR '.$field.' LIKE ', ' NOT LIKE ', ' '), @$_REQUEST[$field]));
// Здесь убираем ситуацию когда в запросе встречается нечто вроде a & ^ d (а И НЕ d)
$string = str_replace('LIKE NOT LIKE', 'NOT LIKE', $string);
Кроме того следует уделить особое внимание на безопасность, ведь % (hex code) и скобки (ф-я char****** довольно опасны.
Спасибо.