查寻功能是每个网站都有的基本功能,最简单的实现方法当然就是使用SQL的like操作符来匹配用户输入的关键字。
以一个简单的CMS系统举例,检索栏位可能包括有Title(主题)和Content(内容),具体的SQL语句撰写如下:
1. SELECT * FROM cms WHERE title LIKE '%{$name}%' OR content LIKE '%{$name}%')";
SELECT * FROM cms WHERE title LIKE '%{$name}%' OR content LIKE '%{$name}%')";
SQL语句中%xxx%可以检索出任何包含xxx的字符串的主题或内容作为符合条件的资料。如xxx为test,那么test、contest、testable等等都是符合的结果。
现在我们就已经完成了一半的功能,接着如何实现高亮显示呢?其实其中最复杂的是如何做到英文的整词选择,最简单方法当然是使用正则表达式来进行替换。PHP代码撰写如下:
1. $content = preg_replace("//b(/w*$highlight/w*)/b/",
2. "<spanstyle=/"background-color:#369;/">$1</span>" ,
3. $content);
$content = preg_replace("//b(/w*$highlight/w*)/b/", "<spanstyle=/"background-color:#369;/">$1</span>" , $content);
其中正则表达式:/b(/w*test/w*)/b,/b就是来定位整词的,/w代表任意的ascii字符。如需考虑一些符号的情况,如“-”,只需要把/w修改成[/w-]即可。通过以上的正则表达式,我们就可以高亮显示以下的字符串中的关键字了,其中搜索的关键字为test。
以一个简单的CMS系统举例,检索栏位可能包括有Title(主题)和Content(内容),具体的SQL语句撰写如下:
1. SELECT * FROM cms WHERE title LIKE '%{$name}%' OR content LIKE '%{$name}%')";
SELECT * FROM cms WHERE title LIKE '%{$name}%' OR content LIKE '%{$name}%')";
SQL语句中%xxx%可以检索出任何包含xxx的字符串的主题或内容作为符合条件的资料。如xxx为test,那么test、contest、testable等等都是符合的结果。
现在我们就已经完成了一半的功能,接着如何实现高亮显示呢?其实其中最复杂的是如何做到英文的整词选择,最简单方法当然是使用正则表达式来进行替换。PHP代码撰写如下:
1. $content = preg_replace("//b(/w*$highlight/w*)/b/",
2. "<spanstyle=/"background-color:#369;/">$1</span>" ,
3. $content);
$content = preg_replace("//b(/w*$highlight/w*)/b/", "<spanstyle=/"background-color:#369;/">$1</span>" , $content);
其中正则表达式:/b(/w*test/w*)/b,/b就是来定位整词的,/w代表任意的ascii字符。如需考虑一些符号的情况,如“-”,只需要把/w修改成[/w-]即可。通过以上的正则表达式,我们就可以高亮显示以下的字符串中的关键字了,其中搜索的关键字为test。