一开始用的是preg_replace,但是经过一段时间的实践,发现有的时候会出错,还是换回原先的 str_replace。
/* 关键词描红 */
function SearchReplaceKw($string,$sokw='',$useSafe=false)
{
if($useSafe) $sokw = SafeStrip($sokw);
if(empty($sokw) || empty($string)) return $string;
//$sokw = preg_replace('/\s+/','|',$sokw);
//return preg_replace("/($sokw)/i",'<font color="red">\\1</font>',$string);
$sokwarr = explode(' ',$sokw);
$sokwarr = array_unique( $sokwarr);
foreach($sokwarr as $k )
{
$string = str_ireplace($k, '<font color="red">'.$k.'</font>', $string);
}
return $string;
}
/* 去除特殊字符,不包括空格 */
function SafeStrip($kw)
{
if(strlen($kw) == 0) return '';
$badStringArr = array(
'`', '~', '!', '@', '#', '$', '%', '^', '&', '*',
'(', ')', '_', '+', '|', '-', '=', '\\',
'[', ']', '{', '}', ';', '\'', ':', '"',
'<', '>', '?', ',', '.', '/');
return preg_replace('/([\r\n\t ]+)/',' ',str_replace($badStringArr,' ',$kw));
}
使用 str_replace替换。用preg_replace 容易出错!