通过GET方式提交一个字段字符串 比如 /?lanmu=搜索的字符串
php处理 返回一个和此字符串相似的 栏目id
思路:
1 数组键名为栏目id 键值是栏目名 大约设置10来个
2 GET字符串中不确定它与其中哪个栏目相似
是否要做简单的过滤后 再匹配看下哪个栏目名和请求的字符串相似
3 如果有就返回这个栏目id 没有就返回别的
通过GET方式提交一个字段字符串 比如 /?lanmu=搜索的字符串
php处理 返回一个和此字符串相似的 栏目id
思路:
1 数组键名为栏目id 键值是栏目名 大约设置10来个
2 GET字符串中不确定它与其中哪个栏目相似
是否要做简单的过滤后 再匹配看下哪个栏目名和请求的字符串相似
3 如果有就返回这个栏目id 没有就返回别的
看题主描述,最大的困难应该是相似度的判断。
PHP
判断两个字符串的相似度可使用的内置函数有:
similar_text(string1,string2,percent)
levenshtein(string1,string2,insert,replace,delete)
前者返回字符串之间的字符匹配数目,后者返回字符串之间的Levenshtein
距离。字符匹配数目越多,字符就越相似;Levenshtein
距离越小,则字符之间越相似。
如果题主需要特定的相似匹配需求,也可以自己实现算法。
整个PHP
处理流程大致是:
初始准备工作:接收搜索字符串、设定相似度阙值(若相似度小于此阙值则判断为“栏目不存在”);
循环栏目数组,将栏目名称和搜索字符串通过相似判断算法一一比较,记录最大相似度栏目的相似度和键值;
判断相似度是否小于阙值,若小于阙值,则判定“栏目不存在”;若大等于阙值,则返回栏目键值,即id
。
不知道题主的栏目名称是中文还是英文,如果是中文,那相似度的判断就更为复杂些,内置函数的判断准确性就不高了。
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答1.4k 阅读✓ 已解决
1 回答797 阅读
798 阅读
相同的话好处理,数组相关函数里就有搜索的函数。
相似的话,你得首先定义相似,单不管怎样你都需要遍历数组来搜索。