php搜索–多关键词如何描红
在用谷歌或百度搜索一个关键词,搜索引擎会把我们搜索的关键词变红,在我们自己的网站上面难免会用到站内搜索的功能,如果将查询网站页面中的关键词描红或将变关键词变成其它颜色,这样在查找资料里就不会觉得疲劳了,下面说一下多关键词描红的简单原理。
首先将form提交过来的表单用PHP的函数explode进行分割:$s_search=explode(" ",$s_search);,这样会通过空格将关键词分成多个,打印出来,就是从0开始递归显示关键词。
搜索查询的SQL语句如下图所示:
显示的时候直接通过 str_replace 替换显示即可。
$row[title]=str_replace($s_search[0], "$s_search[0]", $row[title]);
$row[title]=str_replace($s_search[1], "$s_search[1]", $row[title]);
这样在页面当中搜索的关键词就直接被替换成为 关键词 关键词这样的格式了,有一点不好的是笔者在火狐的浏览器下面显示不正确,直接被显示出来了,所以建议定义CSS样式来控制就没有问题了。
下面是一个不错的搜索函数,可以直接参考使用,这里只是介绍了多关键词描红的一个原理,大家可以看一下CMS里面描红功能,写得比较完善。
[code lang="php"]
function SearchReplaceKw($string,$sokw=''){
if(empty($sokw) || empty($string)) return $string;
$badString = array(
'~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '+', '[', ']',
':', ';', '\'', '"', '|', '\\', ',', '.', '?', '/', '<', '>',
);
$sokw = str_replace($badString,' ',$sokw);
$sokw = preg_replace('/\s+/','|',$sokw);
return preg_replace("/($sokw)/",'\\1',$string);
}
[/code]