Подсветка слов в тексте.

vmaximov777

Новичок
Подсветка слов в тексте.

Как эффективно решить задачу подсветки слов в тексте.

Например как обойти проблему вложенности слов которые нужно подсветить, как показано ниже:

Ищем слово 'сообщение' и 'общение' в тексте '... сообщение ...' и когда подсвечиваем - получаем скажем:

'... <font color=red>со<font color=red>общение</font></font> ...' а хотелось бы:
'... <font color=red>сообщение</font> ...'

Может кто знает как эффективно решать подобного рода задачи - или где можно почитать..


Всем ответившим заранее благодарен.
 

ksnk

прохожий
начинать подсвечивать слова с самых коротких ?
 

440hz

php.ru
vmaximov777

слова - они разделяются ... например пробеллами ... ну а в регулярках есть спец.символы для этого.
 

vmaximov777

Новичок
Автор оригинала: ksnk
начинать подсвечивать слова с самых коротких ?
Тогда получиться со<font color=red>общение</font>

-~{}~ 08.08.06 20:36:

Автор оригинала: 440hz
vmaximov777

слова - они разделяются ... например пробеллами ... ну а в регулярках есть спец.символы для этого.
Припустим у меня уже есть массив слов отсортированих по длине и сам текст со словами - как быть дальше?
 

vmaximov777

Новичок
Автор оригинала: 440hz
это если делать str_replace(), а если регуляркой то прокатит

-~{}~ 08.08.06 20:07:


написать нормальный preg_replace() или ищем готовое решение?
А что есть готовые решения?
 

WP

^_^
vmaximov777
А нужно выделять только точные совпадения или при слове "рыба" посвечивать еще и "рыбы"? Просто если хочешь могу дать свой подсветитель поисковых слов в тексте.
 

vmaximov777

Новичок
Автор оригинала: WP
vmaximov777
А нужно выделять только точные совпадения или при слове "рыба" посвечивать еще и "рыбы"? Просто если хочешь могу дать свой подсветитель поисковых слов в тексте.
Для меня хватит точных совпадений... Вообще бы хотелось посмотреть как это люди делают...
 

vmaximov777

Новичок
одно с найденых:
/**************************************************************************/
/* 0xENGINE: Web Site */
/* =========================== */
/* (c)oded 2006 by white phoenix */
/* http://whitephoenix.ru */
/* */
/* This program is free software. You can't redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License. */
/* */
/* core-lingua.php: Lingua */
/**************************************************************************/

-~{}~ 09.08.06 12:13:

+ в первом варианте class search_highlight
 

deepweb

Новичок
function svet($words, $texts){
$pattern = "/$texts/i";
$replacement = "<font color=\"000099\"><b>$texts</b></font>";
return preg_replace($pattern, $replacement, $words);
}
$words = "Строка текста"; //В этом тексте.
$texts = "Строка"; //То что нужно подстветить.
echo svet($words, $texts);
 

WP

^_^
[offtopic]
MiRacLe
Отличий там куда более чем 10 (если считать 1 байт или 1 строку за 1 отличие). Стеммер распространяется свободно насколько я знаю. Чего тебе не нравится?
vmaximov777
А мужики-то не знают..
deepweb
Зачем это сказал? Думаешь кому-то нужен твой кривой код?
1. у тебя названия аргументов перепутаны.
2. подумай что будет если я передам "/" или chr(0) в качестве слова, или любой специальный символ pcre.
3. просто кривой пример который нифига не подсветит толком.
zxc
Да уж... а главное таких вагон.
[/offtopic]
 

deepweb

Новичок
WP
Да в тему не вник что человек хочет но что же в коде кривое?
1. Хм если докажешь что оно не работает из за этого удевлюсь.
2. Не спорю не по теме.
3. Почему же подсветит то что нужно глянь http://www.ftpsearch.deepweb.spb.ru/
 

baev

‹°°¬•
Команда форума
Стеммер распространяется свободно насколько я знаю.
Поэтому Вы считаете себя вправе присвоить себе права авторства?
Или Вы не в курсе, что означает значок «копирайта»?
 

deepweb

Новичок
baev

Исходник бесплатного морфологического анализатора(стеммер) для русского и английского . Можно использовать в любом языке программирования!

Думаю вы это мне адресовали.
 

WP

^_^
Мда.. ушли в оффтоп.
deepweb
1. Передай в $texts строку ".*" или "/" и посмотри.
2. Это как раз по теме.
3. Это нужно тебе, а не мне.
baev
Я не присваил себе права на стеммер, я обладатель прав на файл core-lingua.php который является частью моего продукта (cms).
 

deepweb

Новичок
WP
1. Я показал чась функции. И если бы ты посмотрел мой пункт 3 ты бы понял что это у себя в программе я предусмотрел. Для этого использую другую функцию естественно и писать её тут смысла не вижу ибо все знаю как форматировать строки убирать / итп.
2. Чти ответ 1.
3. Прости ты сказал не подсветит слишком громко у меня работает светит =)
 
Сверху