Heim >Backend-Entwicklung >PHP-Tutorial >用PHP实现完美的关键词加亮_PHP

用PHP实现完美的关键词加亮_PHP

WBOY
WBOYOriginal
2016-06-01 12:32:38728Durchsuche


/*
用处:加亮关键词
要求:备查文章内除HTML标签外所有 符号分别用 < 和 > 替代
  $rows['content']=str_replace("可能存在问题:效率不高 忘记了大小写转换问题
$content:要加亮的备查文章
$key:关键字
*/
function highlight($content,$key) {
$k_fi=substr($key,0,1);    //取得关键词第一个字符
$k_len=strlen($key);   //计算关键词字数
$l_len=strlen($content);    //计算备查文章字数
for($l_n=0;$l_n{
$l_s=substr($content,$l_n,1);  //取得备查文章当前字符
if($l_s=="{
while($l_s!=">")  //我们就寻找这个标签的关闭
{
$con.=$l_s;  //导入结果
$l_n++;  //当然要开始取备查文章的下一个字符
$l_s=substr($content,$l_n,1);
}
$con.=$l_s;
}
elseif($l_s==$k_fi)  //如果这个字符与关键词第一个字符相同的话
{
   $l_key=substr($content,$l_n,$k_len);  //取备查文章当前位置是否匹配关键词
   if($l_key!=$key)
   {
$con.=$l_s;  //导入结果
   }
   else  //如果匹配
   {
   $l_n+=$k_len-1;  //计数跳过相应字数
$con.="";
$con.=$key;
$con.="
";  //加亮关键词
   }
}
else
{
   $con.=$l_s;  //导入结果
}
}
  return $con;
}

#####################
// 以下进行英文测试
#####################

//备查字符串
$str="aabbccddaabbccddaabbccdd";

//关键词
$key="bc";

//调用函数
$str_hl=highlight($str,$key);

//输出打印到屏幕
echo "#####################\n";
echo " 以下进行英文测试\n";
echo "#####################\n";
echo "

原来的字符串

\n";
echo "

$str

\n";
echo "

" . htmlspecialchars($str) . "

\n";
echo "

关键字:$key

\n";
echo "

加亮后的字符串

\n";
echo "

$str_hl

\n";
echo "

" . htmlspecialchars($str_hl) . "

\n";

#####################
// 以下进行中文测试
#####################

//备查字符串
$str="呵哈嘻啦酷呵哈嘻啦酷呵哈嘻啦酷";

//关键词
$key="哈嘻";

//调用函数
$str_hl=highlight($str,$key);

//输出打印到屏幕
echo "#####################\n";
echo " 以下进行中文测试\n";
echo "#####################\n";
echo "

原来的字符串

\n";
echo "

$str

\n";
echo "

" . htmlspecialchars($str) . "

\n";
echo "

关键字:$key

\n";
echo "

加亮后的字符串

\n";
echo "

$str_hl

\n";
echo "

" . htmlspecialchars($str_hl) . "

\n";


?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn