Выделение информации на веб-странице

Задача
Требуется показать страницу, например результаты поиска, подсветив при этом некоторые слова.

Решение
Вызовите функцию preg_replace() с массивом шаблонов и массивом заместителей:

$patterns = array('\bdog\b/', '\bcat\b');
$replacements = array(' dog',
' while ($page) {
if (preg_match('{^([^<]*)?(]+?>)?(.*)$}',$page,$matches)) {
print preg_replace($patterns,$replacements,$matches[1]);
print $matches[2];
$page = $matches[3];
}
}

Обсуждение
Регулярное выражение, используемое функцией preg_match(), сопоставляет весь возможный текст до тега HTML, затем тег, а затем остальное содержимое. Текст до тега HTML подсвечивается, тег выводится без какого-либо выделения, а остальное содержимое сопоставляется таким же образом. Это предотвращает выделение слов внутри тегов
HTML (например, в URL или в тексте атрибута alt), что могло бы привести к некорректному отображению страницы.

Следующая программа извлекает содержимое URL и помещает его в переменную $url и подсвечивает слова из массива $words.


Слова не выделяются, если они являются частью более длинного слова, посколькуони соответствуют Perl-совместимому оператору регулярного выражения \b для определения границ слова.

$colors = array('FFFF00','FF9900','FF0000','FF00FF',
'99FF33','33FFCC','FF99FF','00CC33');
// строим поиск и заменяем шаблоны регулярным выражением
$patterns = array();
$replacements = array();
for ($i = 0, $j = count($words); $i < $j; $i++) {
$patterns[$i] = '/\b'.preg_quote($words[$i], '/').'\b/';
$replacements[$i] = '' . $words[$i] . '';
}
// получаем страницу
$fh = fopen($url,'r') or die($php_errormsg);
while (! feof($fh)) {
$s .= fread($fh,4096);
}
fclose($fh);
if ($j) {
while ($s) {
if (preg_match('{^([^<]*)?(]+?>)?(.*)$}s',$s,$matches)) {
print preg_replace($patterns,$replacements,$matches[1]);
print $matches[2];
$s = $matches[3];
}
}
} else {
print $s;
}

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Анализ файла протокола веб-сервера
Извлечение содержимого URL с помощью метода POST
Извлечение ссылок из HTML-файла
Использование шаблонов системы Smarty
Отладка обмена заголовками HTTP

Вернуться в раздел: PHP / 11. Автоматизация работы с Web