|
|
|
| Приветствую,
может найдеться добрый человек кто подскажет (или ссылку ткнет) на регулярное выражение для подсветки нужных слов в строке?
preg_replace("/word1|word2|word3/i", "<b>\\0</b>", $string);
Проблема в том, что в строке могут содержаться теги ссылок <a href="http://la-la-la/word2/la-la-la">. Других тегов нет. Как бы так модифицировать его, чтоб не лезло в <a>? | |
|
|
|
|
|
|
|
для: Night_Wolf
(22.05.2007 в 14:59)
| | http://softtime.ru/forum/read.php?id_forum=1&id_theme=37610&page=4
тут я приводил код для обработки слов вне тегов. В этом случае он тоже должен подойти. | |
|
|
|
|
|
|
|
для: Loki
(22.05.2007 в 18:06)
| | Спасибо, Loki.
Модифицировал под свои нужды:
$text='<a href="http://www.siteingine.com.ua/aboutyourself.shtml">very cool word for show</a>';
$fined_pattern = "very|word";
function higlight_text($match, $fined_pattern)
{
$match[1]=preg_replace('/'.$fined_pattern.'/i', '<b>\\0</b>', $match[1]);
return $match[1].$match[2];
}
$text=preg_replace_callback('#([^<>]*)(<[^>]+>)?#', higlight_text, $text);
echo $text;
|
Только мне надо в функцию еще передать значение $fined_pattern. Это можно сделать прямо из preg_replace_callback как-нибуть? | |
|
|
|
|
|
|
|
для: Night_Wolf
(23.05.2007 в 12:13)
| | самый простой вариант
<?
//...
$fined_pattern = "very|word";
function higlight_text($match)
{
global $fined_pattern;
//...
|
| |
|
|
|
|
|
|
|
для: Loki
(23.05.2007 в 15:25)
| | Спасибо, все супер! | |
|
|
|
|
|
|
|
для: Night_Wolf
(23.05.2007 в 16:45)
| | Еще раз спасибо! | |
|
|
|