[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подсветка искомого текста.
DeeKeiD
Как можно сделать подсветку части текста? например есть строка:

Привет меня зовут Ромчег, На улице солнечная погода. Нужно подсветить часть слова Ромчег, например Ром.

Пробовал через str_replace, но проблема в том что если пользователь введёт в $search_$key
значение скажем ромчег то скрипт не сработает...
Свернутый текст


$content = 'Привет меня зовут Ромчег, На улице солнечная погода.';
$search_key = $_POST['key'];
$replace = '<span class="highlight">'. $search_key .'</span>';

echo str_replace($search_key,$replace,$content);



Пробовал через str_ireplace, проблема в том что на выходе я получаю Array вместо $search_key, и я незнаю как сохранить оригинальный вид предложения, т.е если есть слово скажем DeeKeiD, а пользователь введёт в поиске dee, то конечная строка будет выглядеть как deeKieD

Свернутый текст

$content = 'Hello, my name is DeeKeiD.';
$key = array('dee');
$replace = array('<span class="highlight">'. $key .'</span>');

echo str_ireplace($key,$replace,$content);




Спустя 8 минут, 24 секунды (29.07.2011 - 17:09) twin написал(а):
В конкурсах поройся Там штук 20 таких скриптов с разборами.

Спустя 24 минуты, 48 секунд (29.07.2011 - 17:34) DeeKeiD написал(а):
С подсветкой разобрался, как сохранить формат ихсодной строки?
Когда ввожу в поисковике 'dee', на выходе он выдаёт deeKeiD вместо DeeKeiD.

Спустя 1 минута, 36 секунд (29.07.2011 - 17:36) Winston написал(а):
DeeKeiD
Вот так можно
$str = 'Привет меня зовут Ромчег, На улице солнечная погода';
$search = 'Ромчег';

//echo str_replace($search, '<b>'.$search.'</b>', $str);
echo preg_replace("#(" . $search . ")#iu", '<b>\\1</b>', $str);

Использовать str_replace будет гемморнее чем preg_replace

Спустя 15 минут, 52 секунды (29.07.2011 - 17:52) DeeKeiD написал(а):
С форматом исходной строки тоже разобрался.

За основу взял пример http://phpforum.ru/index.php?showtopic=375...%E2%E5%F2%EA%E0 и изменил


foreach($keyWords as $i)
{
$searchText = str_ireplace($i, "$r1$i$r2", $searchText);
}
на

foreach($keyWords as $i)
{
$searchText = preg_replace('#' . $i . '#i', '<span class="highlight">$0</span>', $searchText);
}

Спустя 40 минут, 7 секунд (29.07.2011 - 18:32) Winston написал(а):
Цитата (DeeKeiD @ 29.07.2011 - 17:52)
'#' . $i . '#i'

Еще один момент. Если текст в кодировке utf-8 то шаблон должен вот такой быть
'#' . $i . '#iu'

Спустя 3 часа, 22 минуты, 15 секунд (29.07.2011 - 21:54) twin написал(а):
Вот. Особо радует то, что кому то пригодилась работа, занявшая далеко не первое место.
А это значит мы жили не зря - раз, победа даже в участии - два.

Не бойтесь проиграть, бойтесь не участвовать. smile.gif


_____________
Бесполезно просить пощады у цезаря
Фатальная ошибка : Звонок в неопределенную функцию ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.