-
-
/*
- 用处:加亮关键词
- 要求:备查文章内除html标签外所有 符号分别用 < 和 > 替代
- $rows['content']=str_replace("可能存在问题:效率不高 忘记了大小写转换问题
- $content:要加亮的备查文章
- $key:关键字
- site: bbs.it-home.org
- */
- 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.="{$key}"; //加亮关键词
- }
- }
- else
- {
- $con.=$l_s; //导入结果
- }
- }
- return $con;
- }
// 中文测试
- //备查字符串
- $str="程序员之家程序员之家程序员之家我们大程序员之家家的都是一个程序员之家家";
- //关键词
- $key="程序员之家";
//调用函数
- $str_hl=highlight($str,$key);
-
echo "
" . $str_hl . " \n";
- echo "
";
- echo "
" . htmlspecialchars($str_hl) . " \n";
- ?>
-
复制代码
|