>>>А регулярные выражения не помогают?
>>>Их можно использовать в запросе MySQL
>>
>>А пример скрипта можно?
>
>А ты перед отправкой в базу замени все спецсимволы на их условное
>обозначение. Это экранированием называется.
>
>Например:
>
>выаорво\апип&&dgdf#hfgh$jkh@`lkjklkk`kvb
>выаорво\0апип\1\1dgdf\2hfgh\3jkh\4\5lkjklkk\5kvb
>
>Никаких запретных символов уже нет. И когда отправляем запрос на поиск, в
>запросе поиска осуществляем соответствующую замену.
>
>Когда же нужно выводить строки пользователю, получая их из базы, то проводим
>обратную замену.
>
>Как на PHP это делается, не знаю, но на перле очень легко,
>буквально несколько символов набрать :)
// урезаем строку до 64 символов чтобы не нагружать БД
$str = substr($str, 0, 64);
// поисковая строка не менее трех символов, причины см. выше
$str = trim(preg_replace("/\s(\S{1,2})\s/", " ", ereg_replace(" +", " "," $str ")));
// сжатие двойных пробелов
$str = ereg_replace(" +", " ", $str);
далее вырезаем хтмл код, пример 5 из документации по preg_replace
// добавляем слэши если надо
if (get_magic_quotes_gpc()) $str = addslashes($str);
// либо вообще вырезаем все "ненормальные" символы
$str = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $str);