用PHP做一个简单的搜索功能
用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实现一个简单的搜索功能到此就演示完毕了,感谢您的阅读。
用PHP做一个简单的搜索功能相关推荐
- html控制图的宽,用JointJS做一个简单的功能控制图
继上一篇介绍了GoJS之后,继续研究JS的绘图工具,毕竟GoJS有些小贵.这次选择了JointJS,完全开源,它还有一个商业版本叫Raddit,功能更强大.不过就我的需求场景,开源的Joint就足够了 ...
- django 实现简单的搜索功能
django 实现简单的搜索功能 1 年,1 月前 4849 字 13259 阅读 7 评论 搜索是一个复杂的功能,但对于一些简单的搜索任务,我们可以使用 django model 层提供的一些内置方 ...
- 做一个简单的银行、账户演示程序。 (1)定义一个账户类,包含用户名、密码、余额等属性、存钱、取钱等方法。 (2)定义一个银行类,包含银行名、账户列表等属性,开账户、查账户的功能。账户列表可以使用集
做一个简单的银行.账户演示程序. (1)定义一个账户类,包含用户名.密码.余额等属性.存钱.取钱等方法. (2)定义一个银行类,包含银行名.账户列表等属性,开账户.查账户的功能.账户列表可以使用集合相 ...
- Django做一个简单的博客系统(11)----搜索文章
前言 实现一个简单的搜索文章的功能. 感谢大神的教程:Django搭建个人博客. 一.搜索文章 1.修改视图函数 article/views.py: def article_list(requ ...
- 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截...
程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构 .要想在之后的江湖历练中通关,数据结构必不可少.数据 ...
- 机器人坐标系建立_如何在30分钟内建立一个简单的搜索机器人
机器人坐标系建立 by Quinn Langille 奎因·兰吉尔(Quinn Langille) 如何在30分钟内建立一个简单的搜索机器人 (How to Build A Simple Search ...
- 如何做一个简单的网页版地图
前言 以前做了一个安卓版的地图应用,现在突然想做一个简单的网页版地图.这个简单的网页版地图能根据城市名进行位置查询(有个城市列表的小控件,支持城市列表选择),还能根据经纬度进行位置查询.当你进行城市搜 ...
- 用RC522与arduino做一个简单的门禁系统
用RC522与arduino做一个简单的门禁系统 插本成功要去新学校了,结果发现新学校宿舍没有电梯没有电子门(虽然海景房很香).这对于住惯养老院的我属实难受所所以打算自己也整一个IC卡的门禁系统.然后 ...
- 实现一个简单的投票功能
实现一个简单的投票功能 最近项目中需要用到一个投票功能,当时觉得简单,向都没想就动手开始做,没想到走了不少弯路. 后来才发现,是想的太过简单了.来看看改进后的功能. 第一步:数据库设计 两个表:一个主 ...
最新文章
- 如何修改WINDOWS默认的3389远程端口
- 001PHP文件处理——文件处理disk_total_space disk_free_space basename dirname file_exists filetype...
- OpenCV图像分割Grabcut算法
- ABAP:Read_Text(SAVE_TEXT)函数的使用方法
- python画代码流程图_Python使用graphviz画流程图过程解析
- 笔记-高项案例题-2015年下-需求管理
- 【树链剖分】LCA(P4211)
- 算法面试,如何在100 亿URL中判断某个URL是否存在
- TLS/SSl 相关攻击漏洞及检测方法(testssl.sh)
- 【C++ STL学习之三】容器deque深入学习
- 关于win10 使用eclipse如何配置环境变量
- Ubuntu18.04无法进入图形界面桌面的问题及解决
- getElementsByName和getElementByID
- tomcat优化笔记
- mysql5.8安装
- stokes方程matlab,【Fluent】雷诺方程:推导与求解(附MATLAB代码)
- 寒假训练营第一天(学会CB):D - Unimodal Array
- 流量渠道 转化率 买家行为 处罚扣分规则 如何不被抓单,被判虚假交易对店铺的影响
- excel单个对象用poi导出,并设置每个sheet得最大行数防止报错
- 倒排表数据结构、通配符查询、拼写纠正详解