网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > PHP > PHP技术进阶 > 用PHP实现完美的关键词加亮  

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

2006-02-27  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

<?php

/*
用处:加亮关键词
要求:备查文章内除HTML标签外所有 < 和 > 符号分别用 &lt; 和 &gt; 替代
  $rows['content']=str_replace("<","&lt;",$rows[content]);
  $rows['content']=str_replace(">","&gt;",$rows[content]);
可能存在问题:效率不高 忘记了大小写转换问题
$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_len;$l_n++)  //根据备查文章字数开始循环
{
$l_s=substr($content,$l_n,1);  //取得备查文章当前字符
if($l_s=="<")    //如果这个字符是标签的开始的话
{
while($l_s!=">")  //我们就寻找这个标签的关闭 网管朋友网www_bitscn_net
{
$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.="<span style=\"color:#f00;font-weight:bold;text-decoration:underline\">";
$con.=$key;
$con.="</span>";  //加亮关键词
   }
}
else
{
   $con.=$l_s;  //导入结果
}
}
  return $con;
}

#####################
// 以下进行英文测试 网管有家bitscn.net
#####################

//备查字符串
$str="aabbccdd<qq alt=\"aabbccdd\" />aabbccdd<aabbccdd>aabbccdd";

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

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

//输出打印到屏幕
echo "#####################\n";
echo " 以下进行英文测试\n";
echo "#####################\n";
echo "<p>原来的字符串</p>\n";
echo "<p>$str</p>\n";
echo "<p>" . htmlspecialchars($str) . "</p>\n";
echo "<p>关键字:$key</p>\n";
echo "<p>加亮后的字符串</p>\n";
echo "<p>$str_hl</p>\n";
echo "<p>" . htmlspecialchars($str_hl) . "</p>\n";

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

//备查字符串
$str="呵哈嘻啦酷<qq alt=\"呵哈嘻啦酷\">呵哈嘻啦酷</qq>呵哈嘻啦酷"; 网管bitscn_com

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

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

//输出打印到屏幕
echo "#####################\n";
echo " 以下进行中文测试\n";
echo "#####################\n";
echo "<p>原来的字符串</p>\n";
echo "<p>$str</p>\n";
echo "<p>" . htmlspecialchars($str) . "</p>\n";
echo "<p>关键字:$key</p>\n";
echo "<p>加亮后的字符串</p>\n";
echo "<p>$str_hl</p>\n";
echo "<p>" . htmlspecialchars($str_hl) . "</p>\n";


?>

网管有家www.bitscn.net

TAGs   关键词   完美   实现   //   echo   key   content   l_s   l_n   /p   ##################  
 上一篇: PHP应用程序的性能优化   下一篇:PHP5的XML新特性
用PHP实现完美的关键词加亮 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: