下面湿dedecms关键字替换连接
function highlight($string, $words, $hrefs='',$pretext='', $step='')
{
//后两个变量为系统继承变量,不可指定
if($step != 'me'){
return preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$words, \$hrefs, '\\1', 'me')", $string);
}

if(is_array($words)){
$string = str_replace('\"', '"', $string);
foreach($words as $k => $word){
if(empty($hrefs[$k])){
$string = preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$word, '', '\\1', 'me')", $string);
}else{
$string = preg_replace('/(^|>)([^<]+)(?=<|$)/sUe', "highlight('\\2',\$word, \$hrefs[\$k], '\\1', 'me')", $string);
}
}
return $pretext.$string;
}else{
if($hrefs == ''){
$string = str_replace($words,'<strong><font color="#ff0000">'.$words.'</font></strong>',$string);
}else{
if(strpos($string, $words) !== false){
$string = str_replace($words, '<a href="'.$hrefs.'" style="color:#ff0000;font-weight:bold;">'.$words.'</a>', $string);
}
}
return $pretext.$string;
}

}
输出结果:关键字分开关键字隔离关键字离别
修改:
if(strpos($string, $words) !== false){
$string = str_replace($words, '<a href="'.$hrefs.'" style="color:#ff0000;font-weight:bold;">'.$words.'</a>', $string);
}
修改后:         $mmb="/$words/";
         $mmk=str_replace($words,$mmb,$words);
         $replacements1='<a href="'.$hrefs.'" style="color:#ff0000;font-weight:bold;">'.$words.'</a>';
 $string=preg_replace($mmk, $replacements1, $string,1);
输出:输出结果:关键字分开关键字隔离关键字离别递归问题不知如何修改;各位大侠帮忙。谢谢