Подсветка текста на страницеКаким образом можно сделать подсветку текста на странице? Для начала давайте определимся, каким образом мы будем подсвечивать текст и как будем узнавать, какой текст нужно подсвечивать. Подсвечивать текст можно (самое простое) фоном. Напримёр, жёлтым. Сразу заметно, очень удобно. Ещё можно подчёркиванием, например таким. В общем, вариантов много. Я предлагаю не ограничивать вебмастера и просто необходимый текст заключать в блок: Стиль класса определяйте как хотите. Я, например, сделал так: Теперь о том, откуда мы будем узнавать, какие слова подсвечивать: это очень просто — мы будем передавать GET-запросом параметр highlight, равный подсвечиваемому тексту. Таким образом URL страницы станет таким: И мы легко сможем взять значение этой переменной из суперглобального массива $_GET. Ну, чтобы было удобнее разработчикам, разрешим также передавать параметр highlight методом POST и будем его брать из массива $_REQUEST. Теперь о том, как же мы будем это делать. Для того, чтобы выделить необходимый текст на странице, нам нужно получить весь текст страницы. Для этого мы будем использовать функции контроля за выводом (а именно ob_start). В самом начале Вашего PHP-скрипта, который занимается выводом страниц вставляется следующий код: Мы запускаем контроль за выводом и указываем, что обработкой всех выведенных данных будет заниматься функция highlighter. Теперь нужно определить и саму функцию highlighter. Простейший вариант выглядел бы так: Увы, он содержит один очень важный недостаток: достаточно в параметре highlight передать имя любого тега (например, p, a или body) и всё сломается — он окружит теги <span>-ами. То же самое произойдёт и со значениями параметров тегов. Единственный более-менее нормальный вариант, который я нашёл — сначала вырезать все
теги вместе с атрибутами из страницы, а потом возвращать их на свои
места. Таким образом функция highlighter изменяет свой вид на такой:
Вот так мы и решили проблему с подсветкой слов. Метод, конечно, не идеален, но очень хорош. Хочу заметить: по-умолчанию при поиске кодировка не учитывается. То есть если у Вас сайт в windows-1251 и данные для подсветки пришли в ней же, то всё будет отлично. Но если Ваш сайт в иной кодировке, или если данные приходят в неправильной кодировке, то ничего подсвечено не будет. Например, у меня сайт в UTF-8, а все данные от параметра highlight приходят в windows-1251 — скрипт их сначала перекодирует в UTF, а уже потом делает подсветку. Источник: evgeny.neverov.name |
КОНТАКТЫ
г. Екатеринбург info@vismech.ru |
текущее: НОВОСТИ 05.12.2013 - Уход за флэш-накопителем 05.12.2013 - Компьютер самопроизвольно выключается 05.12.2013 - Почему не запускается компьютер? 27.11.2013 - Canon Legria HF R406 - Описание видеокамеры 27.11.2013 - TravelMate P645 новый лэптоп бизнес-класса от Acer |