Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

выделение искомых слов

Идеи для расширения функциональности phpBB 2.0.x
AEC

выделение искомых слов

Сообщение AEC »

заметил, что на phpbb не выделяются слова в сообщениях после поиска.

ну, т.е. если я ввёл слово "поиск", то в найденных сообщениях оно должно быть выделено как-то. ведь так?

ещё английские слова вроде как выделяются и то не всегда (я так и не понял закономеронсти), а вот русские слова вообще не выделяются. бред какой-то. можете сами на своём форуме попробовать.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

AEC
Выделяются, но с русскоязычными сообщениями имеются проблемы, связано это обычно с неправильной настройкой локали. Здесь сделать ничего не удалось, а вот например при помощи Денвера и выделение русских слов работает на ура.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

а что такое этот Денвер?
а что касается русских слов, так на том же overclockers.ru выделение-то работает, а у вас, впрочем как и у меня на форуме, выделение русских слов не фурычит.

кстати, английские слова также не выделяются, если они присутствуют в ссылках (по известным причинам, но тоже ведь можно было и поправить это).
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

AEC
Посмотрим, может что-то и удастся поправить.
Я пока не знаю, почему у меня выделение не работает, выставлял локаль по советам хостера - и все равно толка нет.

Денвер - это комплект "Апач + MySQL + etc", подробнее на оф. сайте.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
AEC

Сообщение AEC »

Xpert, тогда остаётся ждать, т.к. для меня это уж точно не под силу.
AEC

Сообщение AEC »

Xpert, ты не забыл о данном запросе? очень хочется по-человечески работающий поиск.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Зарегистрирован: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Не забыл, вот только толка от моих изысканий пока нет.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Alex_S
phpBB 1.2.0
Сообщения: 15
Зарегистрирован: 19 лет 4 месяца
Откуда: Москва

возможное решение проблемы

Сообщение Alex_S »

Всем привет,

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

Самое интересное, что у меня на локальном компе в системе Windows NT4.0 + Apach 2.0.44 + PHP 4.3.0 + MySQL 3.23.55 выделение русских слов (английские само-сабой выделяются) в результатах поиска работает, а у хостера на unix'е - нет (английские - да). Форум 2.0.11

Решил попробовать покопаться/разобраться, т.к. малость в программировании понимаю. Если америку для кого открою - звиняйте :)

Нашел место, где собсно происходит выделение цветом. Оказалось, что это всего одна строка, но такая!!! :shock: .... часа три пытался понять, как она работает. 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.
С уважением, надеюсь Вы тоже...
Alex_S
phpBB 1.2.0
Сообщения: 15
Зарегистрирован: 19 лет 4 месяца
Откуда: Москва

так как?

Сообщение Alex_S »

Ну так как такое решение проблемы? Хотелось бы услышать мнения/комментарии знатоков.
С уважением, надеюсь Вы тоже...
Alex_S
phpBB 1.2.0
Сообщения: 15
Зарегистрирован: 19 лет 4 месяца
Откуда: Москва

Сообщение Alex_S »

Неужели выделение искомых русских слов никому не интересно??
С уважением, надеюсь Вы тоже...
romutis
phpBB 1.4.4
Сообщения: 103
Зарегистрирован: 19 лет 10 месяцев

Re: возможное решение проблемы

Сообщение romutis »

Alex_S писал(а):Ну а то, что поиск русских слов регистрозависимый наверное все знают. Тоже как бы баг. Копать видимо надо в search.php.
Неправда ваша, батенька. При правильных настройках - всё правильно ищется (вне зависимости от регистра) и правильно подсвечивается.
// romutis
Alex_S
phpBB 1.2.0
Сообщения: 15
Зарегистрирован: 19 лет 4 месяца
Откуда: Москва

Re: возможное решение проблемы

Сообщение Alex_S »

romutis писал(а):Неправда ваша, батенька. При правильных настройках - всё правильно ищется (вне зависимости от регистра) и правильно подсвечивается.
Настройках чего? Просвятите пожалуйста ;)
С уважением, надеюсь Вы тоже...
romutis
phpBB 1.4.4
Сообщения: 103
Зарегистрирован: 19 лет 10 месяцев

Сообщение romutis »

Alex_S
Здесь на форуме много писали про настройки локали. Правильная настройка локали - ключ к правильному содержанию таблицы поисковых слов (соответственно, к поиску) и к подсветке найденных слов.
// romutis
Alex_S
phpBB 1.2.0
Сообщения: 15
Зарегистрирован: 19 лет 4 месяца
Откуда: Москва

Сообщение Alex_S »

Да, только на этом форуме подсветка русских слов так и не работает. Значит не все так просто с настройкой локали?
И потом, поиск русских слов то работает, подсветки нет.
С уважением, надеюсь Вы тоже...
romutis
phpBB 1.4.4
Сообщения: 103
Зарегистрирован: 19 лет 10 месяцев

Сообщение romutis »

Alex_S писал(а):Да, только на этом форуме подсветка русских слов так и не работает. Значит не все так просто с настройкой локали?
И потом, поиск русских слов то работает, подсветки нет.
Мне этот форум не указ - я на своём всё настроил, всё работает.
// romutis

Вернуться в «Запросы модов для phpBB 2.0.x»