Всем привет,
Тоже вот озадачился этой проблемой, поискал на форуме и к своему удивлению нашел только эту ветку по данной теме, но и в ней не нашел ответа

. И судя по этому форуму проблема пока не решена (или ошибаюсь??)
Самое интересное, что у меня на локальном компе в системе Windows NT4.0 + Apach 2.0.44 + PHP 4.3.0 + MySQL 3.23.55 выделение русских слов (английские само-сабой выделяются) в результатах поиска работает, а у хостера на unix'е - нет (английские - да). Форум 2.0.11
Решил попробовать покопаться/разобраться, т.к. малость в программировании понимаю. Если америку для кого открою - звиняйте
Нашел место, где собсно происходит выделение цветом. Оказалось, что это всего одна строка, но такая!!!

.... часа три пытался понять, как она работает. PHP начал постигать недавно, потому слабоват еще, а регэкспы - рег.выражения - вообще для меня вещь пока трудно постижимая, хотя знаю, штука мощная.
Вот как это выглядит в файле viewtopic.php:
// Highlight active words (primarily for search)
//
if ($highlight_match)
{
// This was shamelessly 'borrowed' from volker at multiartstudio dot de
// via php.net's annotated manual
$message = str_replace('\"', '"', substr(preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "preg_replace('#\b(" . $highlight_match . ")\b#i', '<span style=\"color:#" . $theme['fontcolor3'] . "\"><b>\\\\1</b></span>', '\\0')", '>' . $message . '<'), 1, -1));
}
Пошел на php.net в описания используемых здесь функций. Долго вникал особенно в preg_replace (
http://ru2.php.net/manual/ru/function.preg-replace.php), потому как сложная и казалось, что в ней проблема кроется. И читая комментарии и примеры разных людей по использованию этой функции, случайно наткнулся на неприметное сообщение
nospam at home dot net
20-Nov-2003 07:09
replacing patterns with \b might yield to different results depending on your script platform. ex:
$new = preg_replace("\bЦsterreich\b/i","A","Germany Цsterreich France");
will replace on windows systems, but will not replace on linux etc., since 'Ц' will be interpreted as a '\b' itself.
(в western кодировке Ц соответсвует О с 2-мя точками сверху, т.н. умляут, если вдруг кто не понял)
Не совсем понял его последнюю фразу начиная с since.... Насколько я знаю, '\b' в шаблоне поиска соответствует границе слова, например пробелу или концу строки.
Короче, попробовал удалить '\b' из шаблона. И что вы думаете? Заработало! Правда следует оговориться, не совсем также, как с англ. словами. Т.е. если мы ищем "comp*", то в результатах будут подсвечены слова "computer", "computing", "compare" и т.д. А если ищем например "обра*", то будет подсвечено "обра" в словах "образец", "образина", "обращение" и т.д.
Не проверял все возможные сочетания с AND OR NOT, но два слова через пробел в строке поиска - в результатах подсвечиваются.
Ну а то, что поиск русских слов регистрозависимый наверное все знают. Тоже как бы баг. Копать видимо надо в search.php.
С уважением, надеюсь Вы тоже...