<?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