Обработка строки
Первым делом надо порезать ручками строку.
$search = substr($search, 0, 64);
64 символов пользователю будет достаточно для поиска. Теперь каленым железом выжжем все "ненормальные" символы.
$search = preg_replace("/[^\w\x7F-\xFF\s]/", " ", $search);
По идее, нельзя давать пользователю возможности искать по слишком коротким словам - кроме всего прочего, это сильно загружает сервер. Итак, разрешим искать только по словам, которые длиннее двух букв (если ограничение больше, надо заменить "{1,2}" на "{1, кол-во символов}").
$good = trim(preg_replace("/\s(\S{1,2})\s/", " ", ereg_replace(" +", ""," $search ")));
А после замены плохих слов - надо сжать двойные пробелы (они были сделаны специально для корректного поиска коротких слов).
$good = ereg_eplace(" +", " ", $good);