用PHP做一个简单的搜索功能
 说到搜索,大家最熟悉不过了。当你想知道某个东西,某件事,你也许会刻意搜索它,而搜索作为一项基本的用户必备工具,它有着庞大的知识库,通过各种联动技术,当你输入想要了解的关键字时,它基本能为你展现所要搜索的结果,其实,你的一次搜索行为,搜索服务器就会发生一次头脑风暴,将关键字所匹配的多种结果一一展现出来。
开发环境:php5+mysql5+nginx1.16  数据库关键表设计 name字段用于存放搜索关键字的多种可能词汇,href字段用于存放网站地址,实现对查询结果的网站跳转,img字段则存放该网站的logo或者重要图片提示信息。  图片资源存放在项目img/search_img文件夹目录下  网站主页代码  一级搜索框代码,将参数传递给chksearch.php  二级搜索框代码,处理一级搜索传递的关键字并保存,同时支持再次搜索关键字。  一级搜索样式表  二级搜索样式表  设计代码已写完,来看看效果。 打开一级搜索页面,代码设计需要考虑三种情况1.没有输入关键字,2.输入关键字,数据库查询有结果,3.输入关键字,数据库查询无结果。先不输入关键字,直接点搜索。  自动跳转到二级搜索页面,并准确检测并提示未输入关键字,  输入“电脑”关键字,正确查询数据库name字段里含有“电脑”的结果,并以文字和图片以列表形式展示。  输入“地铁”关键字,系统提示“未找到该关键字所属内容”,确实,数据库插入数据时并无“地铁”这个词汇。  回到一级搜索,输入“google”关键字,点击搜索。  自动跳转到二级搜索页面,并保留一级搜索页面传递过来的关键字,同时也能准确查询关键字相关的结果。  测试关键字“手机”,正确展示结果。  测试关键字“空调”,正确展示结果。  测试关键字“咖啡”,正确展示结果。  测试关键字“导航”,正确展示结果。  测试关键字“腾讯”,正确展示结果。  再次输入关键字“手机”,并点击文字链接。  成功以一个新窗口跳转到关键字所属的网站。  当我们想在搜索结果中高亮显示关键字,可以在chksearch.pho文件加入str_ireplace函数。  搜索“电脑”即可以红色标记关键字。 搜索Apple  再次搜索Apple  从搜索结果可以看出并不区分关键字的英文大小写,同时也能准确标记结果集中的关键字。 当然我用的where 字段 like “%关键字%”这个sql语句实现搜索功能,有一个bug就是当输入%时,会查询所有结果,这是在用户端不被允许的,我们可以在chksearch.php做一个用户输入关键字的字符串检测,过滤掉一些非法字符。
PHP实现一个简单的搜索功能到此就演示完毕了,感谢您的阅读。
|