PHP搜字符串在数组中相似键值(字符串需要拆)
通过GET方式提交一个字段字符串 比如 /?lanmu=搜索的字符串
php处理 返回一个和此字符串相似的 栏目id
思路:
1 数组键名为栏目id 键值是栏目名 大约设置10来个
2 GET字符串中不确定它与其中哪个栏目相似
是否要做简单的过滤后 再匹配看下哪个栏目名和请求的字符串相似
3 如果有就返回这个栏目id 没有就返回别的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
相同的话好处理,数组相关函数里就有搜索的函数。
相似的话,你得首先定义相似,单不管怎样你都需要遍历数组来搜索。
看题主描述,最大的困难应该是相似度的判断。
PHP
判断两个字符串的相似度可使用的内置函数有:前者返回字符串之间的字符匹配数目,后者返回字符串之间的
Levenshtein
距离。字符匹配数目越多,字符就越相似;Levenshtein
距离越小,则字符之间越相似。如果题主需要特定的相似匹配需求,也可以自己实现算法。
整个
PHP
处理流程大致是:初始准备工作:接收搜索字符串、设定相似度阙值(若相似度小于此阙值则判断为“栏目不存在”);
循环栏目数组,将栏目名称和搜索字符串通过相似判断算法一一比较,记录最大相似度栏目的相似度和键值;
判断相似度是否小于阙值,若小于阙值,则判定“栏目不存在”;若大等于阙值,则返回栏目键值,即
id
。不知道题主的栏目名称是中文还是英文,如果是中文,那相似度的判断就更为复杂些,内置函数的判断准确性就不高了。