Автор Тема: Выделение слов особым шрифтом  (Прочитано 3349 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
Здравствуйте!
При выводах результата поиска по сайту иногда красиво выделять в выводимом тексте ключевые слова, по которым осуществлялся поиск.
Как это удобно сделать в Perl с соблюдением исходного регистра букв? Например, если $keyword = “Red”; то замена по $page =~ s/$keyword/$keyword<\\/b>/ig заменит слово “Red” в любых регистрах (reD, ReD и т.д.), но она заменит его не на те регистры, которые были в тексте изначально, а на тот, который прописан в $keyword – “Red”. Как это исправить?
Конечно, можно написать скрипт, который перебирает любые сочетания регистров букв в $keyword и заменяет их без параметра игнорирования регистра /i. Но это не оптимально, да? :)

И как сделать чтобы параметр /i влиял на работу с кириллицей при кодировке Win-1251? Где она прописывается в Perl?

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
Выделение слов особым шрифтом
« Ответ #1 : 23 Мая 2004, 12:58:47 »
Я сам нашёл ответ на первый вопрос. Выделение с сохранением исходного регистра можно делать как $page =~ s/($keyword)/$1<\\/b>/ig.

Вопрос про указание кодировки для грамотной работы с кириллицей остаётся в силе.

Оффлайн synthez

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 104
  • +0/-0
  • 0
    • Просмотр профиля
Выделение слов особым шрифтом
« Ответ #2 : 23 Мая 2004, 14:26:10 »
use locale;
Software  like sex - it\'s better when it\'s free

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Выделение слов особым шрифтом
« Ответ #3 : 24 Мая 2004, 12:04:02 »
use locale;
use POSIX qw(locale_h);
setlocale(LC_CTYPE,"ru_RU.CP1251");
...........
s!$&!$&!;
пока-пока. :)

Оффлайн Forza

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 288
  • +0/-0
  • 0
    • Просмотр профиля
Выделение слов особым шрифтом
« Ответ #4 : 24 Мая 2004, 12:37:18 »
AnnA,

а для чего нужны:
Цитировать
AnnA:
use POSIX qw(locale_h);
setlocale(LC_CTYPE,"ru_RU.CP1251");
?

У меня всё и без них заработало. Было достаточо только use locale;

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
пока-пока. :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28