用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做一个简单的搜索功能相关推荐

  1. html控制图的宽,用JointJS做一个简单的功能控制图

    继上一篇介绍了GoJS之后,继续研究JS的绘图工具,毕竟GoJS有些小贵.这次选择了JointJS,完全开源,它还有一个商业版本叫Raddit,功能更强大.不过就我的需求场景,开源的Joint就足够了 ...

  2. django 实现简单的搜索功能

    django 实现简单的搜索功能 1 年,1 月前 4849 字 13259 阅读 7 评论 搜索是一个复杂的功能,但对于一些简单的搜索任务,我们可以使用 django model 层提供的一些内置方 ...

  3. 做一个简单的银行、账户演示程序。 (1)定义一个账户类,包含用户名、密码、余额等属性、存钱、取钱等方法。 (2)定义一个银行类,包含银行名、账户列表等属性,开账户、查账户的功能。账户列表可以使用集

    做一个简单的银行.账户演示程序. (1)定义一个账户类,包含用户名.密码.余额等属性.存钱.取钱等方法. (2)定义一个银行类,包含银行名.账户列表等属性,开账户.查账户的功能.账户列表可以使用集合相 ...

  4. Django做一个简单的博客系统(11)----搜索文章

    前言 实现一个简单的搜索文章的功能.     感谢大神的教程:Django搭建个人博客. 一.搜索文章 1.修改视图函数 article/views.py: def article_list(requ ...

  5. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截...

    程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少.数据 ...

  6. 机器人坐标系建立_如何在30分钟内建立一个简单的搜索机器人

    机器人坐标系建立 by Quinn Langille 奎因·兰吉尔(Quinn Langille) 如何在30分钟内建立一个简单的搜索机器人 (How to Build A Simple Search ...

  7. 如何做一个简单的网页版地图

    前言 以前做了一个安卓版的地图应用,现在突然想做一个简单的网页版地图.这个简单的网页版地图能根据城市名进行位置查询(有个城市列表的小控件,支持城市列表选择),还能根据经纬度进行位置查询.当你进行城市搜 ...

  8. 用RC522与arduino做一个简单的门禁系统

    用RC522与arduino做一个简单的门禁系统 插本成功要去新学校了,结果发现新学校宿舍没有电梯没有电子门(虽然海景房很香).这对于住惯养老院的我属实难受所所以打算自己也整一个IC卡的门禁系统.然后 ...

  9. 实现一个简单的投票功能

    实现一个简单的投票功能 最近项目中需要用到一个投票功能,当时觉得简单,向都没想就动手开始做,没想到走了不少弯路. 后来才发现,是想的太过简单了.来看看改进后的功能. 第一步:数据库设计 两个表:一个主 ...

最新文章

  1. 如何修改WINDOWS默认的3389远程端口
  2. 001PHP文件处理——文件处理disk_total_space disk_free_space basename dirname file_exists filetype...
  3. OpenCV图像分割Grabcut算法
  4. ABAP:Read_Text(SAVE_TEXT)函数的使用方法
  5. python画代码流程图_Python使用graphviz画流程图过程解析
  6. 笔记-高项案例题-2015年下-需求管理
  7. 【树链剖分】LCA(P4211)
  8. 算法面试,如何在100 亿URL中判断某个URL是否存在
  9. TLS/SSl 相关攻击漏洞及检测方法(testssl.sh)
  10. 【C++ STL学习之三】容器deque深入学习
  11. 关于win10 使用eclipse如何配置环境变量
  12. Ubuntu18.04无法进入图形界面桌面的问题及解决
  13. getElementsByName和getElementByID
  14. tomcat优化笔记
  15. mysql5.8安装
  16. stokes方程matlab,【Fluent】雷诺方程:推导与求解(附MATLAB代码)
  17. 寒假训练营第一天(学会CB):D - Unimodal Array
  18. 流量渠道 转化率 买家行为 处罚扣分规则 如何不被抓单,被判虚假交易对店铺的影响
  19. excel单个对象用poi导出,并设置每个sheet得最大行数防止报错
  20. 倒排表数据结构、通配符查询、拼写纠正详解

热门文章

  1. 设置添加开机自启服务 及系统服务systemd
  2. DG储能选址定容模型matlab 程序采用改进粒子群算法
  3. cocos creator中使用Easing
  4. VOCS在线监测系统 VOCS监测环保数采仪
  5. 小提琴指板音位把位图
  6. C# Winform Settings.setting 使用、用途、理解、注意点
  7. UAF漏洞利用原理分析
  8. 时间轮(Timing Wheel)案例和原理
  9. 微信开发者工具吃内存,页面空白
  10. Git进阶:修改上次提交 git commit --amend