|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Vladimir Marunin 2:5020/400 16 Feb 2006 18:35:43 To : Alexander V. Gaiduk Subject : Re: выделенная фраза -------------------------------------------------------------------------------- "Alexander V. Gaiduk" <gav@arhcity.ru> сообщил/сообщила в новостях следующее: news:43f4858b$1@arhadm.net.ru... > точней, когда я кликаю на ссылку на документ на странице результатов > поиска, > чтоб мне показывался сам документ (это уже есть) и чтоб в этом документе > искомое слово было подсвечено! > как говорицца - задумано == сделано: > > my $refstr = "набор слов искомой строки"; > $refstr =~ s/\s+$//; > $refstr =~ s/^\s+//; > $refstr =~ s/\s+/\|/g; > $pagecontent =~ s/($refstr)/<span > style='background-color:#a0ffa0'>$1<\/span>/gi; > > всё было зашибизь, жизнь показалась раем, > пока я не ввел в качестве искомого слова - "table"... ... > у кого нить есть мысли более конкретные, чем фраза "надо парсить > $pagecontent" ? Есть мысль! "Обязательно надо парсить $pagecontent" IMHO для любого регэкспа можно написать HTML'ку, такую, что он на ней обломается, поэтому только парсить. Кстати, парсить HTML не так сложно. В HTML::Parser вполне можно повесить обработчик на просто текст и там искать. Я бы при парсинге просто запомнил все позиции в которых встречаются слова, а потом уже по этим позициям поменял (с конца). Кода там IMHO строк на 20-30 (с комментариями), зато будет работать надёжно и не падать на каждый чих. Ещё могут быть проблемы с HTML-вставками посреди текста, например вместо пробела будет стоять или какое-то слово из фразы будет ссылкой. -- Vladimir Marunin --- ifmail v.2.15dev5.3 * Origin: RTComm.RU (2:5020/400) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/91811adde204.html, оценка из 5, голосов 10
|