<?php
$text = '<font color=ffcc00>D</font><b>ark</b>'; // входной текст
$key = 'Dark'; // ключевое слово
$url = 'http://www.journals.ru'; // ссылка
$template = '(<[^>]+> )*'; // шаблон тэга, поправьте если можно сделать красивее
$str1 = '';$str2 = '';
function addslash($c) { // экранируем спец.символы
$sys = array('.', '*', '+', '?', '(', ')', '[', ']', '{', '}', '^', '$', '\', '|');
return ((in_array($c, $sys))? '\'.$c:$c);
}
for ($i=0;$i<strlen($key);$i++) { // формируем регу
$str1 .= ($i==0)? addslash($key[$i]):$template.addslash($key[$i]);
$str2 .= ($i==0)? $key[$i]:'\'.$i.$key[$i];
}
$res = preg_replace(array('!'.$str1.'!Ui'), array('<a href='.$url.'>'.$str2.'</a>'), $text); // реплайсим
echo $res; // результат.
?>
отредактировано: 09-06-2003 12:13 - cadaver
<?php
$text = '<b>journals</b><font color=ffcc00>.</font><u>ru</u>';
$key = 'journals.ru';
$url = 'http://journals.ru';
$template = '([\r\n\t ]*<.*>[\r\n\t ]*)*';
$str1 = ''; $str2 = '';
function addslash($c) {
$sys = array('.', '*', '+', '?', '(', ')', '[', ']', '{', '}', '^', '$', '\', '|');
return ((in_array($c, $sys))? '\'.$c:$c);
}
for ($i=0;$i<strlen($key);$i++) {
$str1 .= $template.addslash($key[$i]);
$str2 .= '\'.sprintf('%02d', $i+1).$key[$i];
}
$str1 .= $template;
$str2 .= '\'.sprintf('%02d', strlen($key)+1);
$res = preg_replace(array('!'.$str1.'!Si'), array('<a href='.$url.'>'.$str2.'</a>'), $text);
echo $res;
?>
отредактировано: 10-06-2003 07:54 - zar
$text = '<p>какой-то текст и journals.</p><p align=right>runet стал больше и еще там ляля-топаля</p>';
$key = 'journals.ru';
$url = 'http://journals.ru';
for ($i=1; $i<strlen($key); $i++) {
$str .= '(<.+?> )*'.preg_quote($key[$i]);
}
$str = '/'.preg_quote($key[0]).$str.'/i';
$txt = preg_replace($str, "<a href='".$url."'>\\0</a>", $text);
echo $txt;
отредактировано: 11-06-2003 05:39 - Dark
Мне нужно, чтобы в моей гос...
[Print]
Забрел случайно