php专区

 首页 > php专区 > PHP进阶 > 网络编程 > 用PHP实现完美的关键词加亮

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

分享到:
【字体:
导读:
         摘要:?php/*用处:加亮关键词要求:备查文章内除HTML标签外所有和符号分别用lt;和gt;替代$rows[content]str_replace(,lt;,$rows[content]);$rows[content]str_replace(,gt;,$rows[content]);可能存在问题:效率不高忘记了大小写转换...

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


/*
用处:加亮关键词
要求:备查文章内除HTML标签外所有 < 和 > 符号分别用 < 和 > 替代
  $rows['content']=str_replace("<","<",$rows[content]);
  $rows['content']=str_replace(">",">",$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!=">")  //我们就寻找这个标签的关闭
{
$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";


?>

用PHP实现完美的关键词加亮
分享到:
php:用序列化或session对象让oo进行到底
php:用序列化或session对象让oo进行到底 php:用序列化或session对象让oo进行到底 php支持面向对象编程,这使得我们在编程时可以尽可能使用类及对象来简化 我们的程序,减少代码维护的工作量. 可是由于变量到脚本执行完毕就释放,我们本页所生成的对象想在其它页面使用时 便碰到了麻...
PHP 应用程序的性能优化
PHP 应用程序的性能优化 作者:刘彦青编译 使用PHP编程的最大好处是学习这种编程语言非常容易以及其丰富的库。即使对需要使用的函数不是十分了解,我们也能够猜测出如何完成一个特定的任务。 尽管PHP非常简单易学,但我们仍然需要花费一点时间来学习PHP的一些编程技巧,尤其是与性能和内存占用相关的技巧。在PHP中...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……