>  기사  >  백엔드 개발  >  키워드 교체 및 강조 표시를 구현하는 PHP 코드

키워드 교체 및 강조 표시를 구현하는 PHP 코드

WBOY
WBOY원래의
2016-07-25 08:57:37869검색
  1. /*

  2. 用处:加亮关键词
  3. 要求:备查文章内除html标签外所有 < 和 > 符号分别用 < 和 > 替代
  4. $rows['content']=str_replace("<","<",$rows[content]);
  5. $rows['content']=str_replace(">",">",$rows[content]);
  6. 可能存在问题:效率不高 忘记了大小写转换问题
  7. $content:要加亮的备查文章
  8. $key:关键字
  9. site: bbs.it-home.org
  10. */
  11. function highlight($content,$key) {
  12. $k_fi=substr($key,0,1); //取得关键词第一个字符
  13. $k_len=strlen($key); //计算关键词字数
  14. $l_len=strlen($content); //计算备查文章字数
  15. for($l_n=0;$l_n<$l_len;$l_n++) //根据备查文章字数开始循环
  16. {
  17. $l_s=substr($content,$l_n,1); //取得备查文章当前字符
  18. if($l_s=="<") //如果这个字符是标签的开始的话
  19. {
  20. while($l_s!=">") //我们就寻找这个标签的关闭
  21. {
  22. $con.=$l_s; //导入结果
  23. $l_n++; //当然要开始取备查文章的下一个字符
  24. $l_s=substr($content,$l_n,1);
  25. }
  26. $con.=$l_s;
  27. }
  28. elseif($l_s==$k_fi) //如果这个字符与关键词第一个字符相同的话
  29. {
  30. $l_key=substr($content,$l_n,$k_len); //取备查文章当前位置是否匹配关键词
  31. if($l_key!=$key)
  32. {
  33. $con.=$l_s; //导入结果
  34. }
  35. else //如果匹配
  36. {
  37. $l_n+=$k_len-1; //计数跳过相应字数
  38. $con.="{$key}"; //加亮关键词
  39. }
  40. }
  41. else
  42. {
  43. $con.=$l_s; //导入结果
  44. }
  45. }
  46. return $con;
  47. }

  48. // 中文测试

  49. //备查字符串
  50. $str="程序员之家程序员之家程序员之家我们大程序员之家家的都是一个程序员之家家";
  51. //关键词
  52. $key="程序员之家";

  53. //调用函数

  54. $str_hl=highlight($str,$key);

  55. echo "

    " . $str_hl . "

    \n";
  56. echo "
    ";
  57. echo "

    " . htmlspecialchars($str_hl) . "

    \n";
  58. ?>

复制代码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.