Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсветка результатов поиска, regexp 
:(
    Опции темы
CTAPbIuMABP
Дата 6.6.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 17.2.2006
Где: Киев

Репутация: нет
Всего: 1



я хочу написать подсветку результатов поиска но проблема в том что если парсить всю страницу регуляркой типа 

Код

preg_replace("#слово1|слово2|слово3#i", "<font color=#cc0000>\\0</font>", $text);


то она будет подсвечивать и html теги, а это не хорошо потому что портится страница...

нашел такое решение

Код

eregi_replace("#>([^<]*)(слово1|слово2|слово3)#", ">\\1<font color=#cc0000>\\2</font>", $text);


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

помогите плз! 
PM WWW ICQ Skype   Вверх
Kagor
Дата 6.6.2006, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Debian user
****


Профиль
Группа: Экс. модератор
Сообщений: 2946
Регистрация: 28.2.2003
Где: Королевство Кривых

Репутация: нет
Всего: 85



Модератор: перемещено из Новости IT\Новости из мира PHP. 


--------------------
Disassemble Your life and get the key!
PM ICQ GTalk Jabber   Вверх
Wolf1994
Дата 11.6.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 1
Всего: 29



Не совсем регулярка, но работает достаточно быстро:

Код

//строчка для временной замены
$stupid="gtrujk";

//"спасаем" все тэги
preg_match_all ("/<.*>/Usi", $body, $out2);

//подменяем их заменителем
$body=preg_replace ('/<.*>/Usi', $stupid, $body);

//подсвечиваем результаты поиска
$body=str_ireplace ($seekres, '<span class="seekres">'.$seekres.'</span>', $body);

//"пробегаемся" по подменённым тэгам и восстанавливаем их
$heck=0;
for ($i=0; $i<count ($out2 [0]); $i++)
{
 $heck=strpos ($body, $stupid, $heck);
 $body=substr ($body, 0, $heck).$out2 [0] [$i].substr ($body, $heck+strlen ($stupid));
}


Этот же скорипт можно использовать для "сложных" обработок отдельных фрагментов текста - вытащить эти фрагменты, пропустить через любое количество обработчиков, и "загнать" обратно - на свои места. 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.