php查询相似度最高的字符串的方法

 这篇文章主要介绍了php查询相似度最高的字符串的方法,涉及php操作字符串及数组实现相似度算法的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

 
 

本文实例讲述了php查询相似度最高的字符串的方法。分享给大家供大家参考。具体如下:

根据传入的字符串和数组,返回数组中相似度最高的字符串

1. PHP代码如下:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

function closest_word($input, $words) {
$shortest = -1;
foreach ($words as $word) {
$lev = levenshtein($input, $word);
if ($lev == 0) {
$closest = $word;
$shortest = 0;
break;
}
if ($lev <= $shortest || $shortest < 0) {
$closest = $word;
$shortest = $lev;
}
}
return $closest;
}

2. 代码示例如下:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

// 根据传入的州名(可能客户有输错),返回相似度最高的州名称
$united_state_list = array(
'AL'=>"Alabama",
'AK'=>"Alaska",
'AZ'=>"Arizona",
'AR'=>"Arkansas",
'CA'=>"California",
'CO'=>"Colorado",
'CT'=>"Connecticut",
'DE'=>"Delaware",
'DC'=>"District Of Columbia",
'FL'=>"Florida",
'GA'=>"Georgia",
'HI'=>"Hawaii",
'ID'=>"Idaho",
'IL'=>"Illinois",
'IN'=>"Indiana",
'IA'=>"Iowa",
'KS'=>"Kansas",
'KY'=>"Kentucky",
'LA'=>"Louisiana",
'ME'=>"Maine",
'MD'=>"Maryland",
'MA'=>"Massachusetts",
'MI'=>"Michigan",
'MN'=>"Minnesota",
'MS'=>"Mississippi",
'MO'=>"Missouri",
'MT'=>"Montana",
'NE'=>"Nebraska",
'NV'=>"Nevada",
'NH'=>"New Hampshire",
'NJ'=>"New Jersey",
'NM'=>"New Mexico",
'NY'=>"New York",
'NC'=>"North Carolina",
'ND'=>"North Dakota",
'OH'=>"Ohio",
'OK'=>"Oklahoma",
'OR'=>"Oregon",
'PA'=>"Pennsylvania",
'RI'=>"Rhode Island",
'SC'=>"South Carolina",
'SD'=>"South Dakota",
'TN'=>"Tennessee",
'TX'=>"Texas",
'UT'=>"Utah",
'VT'=>"Vermont",
'VA'=>"Virginia",
'WA'=>"Washington",
'WV'=>"West Virginia",
'WI'=>"Wisconsin",
'WY'=>"Wyoming"
);
$input_state = 'Wiscsin';
$state = closest_word($input_state ,array_values($united_state_list));
echo $state;

希望本文所述对大家的php程序设计有所帮助。

时间: 2024-12-01 22:13:40

php查询相似度最高的字符串的方法的相关文章

php查询相似度最高的字符串的方法_php技巧

本文实例讲述了php查询相似度最高的字符串的方法.分享给大家供大家参考.具体如下: 根据传入的字符串和数组,返回数组中相似度最高的字符串 1. PHP代码如下:     function closest_word($input, $words) { $shortest = -1; foreach ($words as $word) { $lev = levenshtein($input, $word); if ($lev == 0) { $closest = $word; $shortest =

组合查询之核心:拼接字符串

字符串|组合查询 '组合查询之核心:拼接字符串'功能:定义查询条件,定义返回集,定义排序方式'平台:Windows 2000 Server + IIS5.0 + SQL Server 2000'语言:VBScript'作者:Cheery_Ke'***********Start************'**************读取变量*************...seaLastUpdTime = Request("seaLastUpdTime1")&"-"

如何用Replace查询是否包含某个特定字符串

Replace关键字主要是用来将字符串中的某个字符替换成别的字符,今天要为大家介绍下使用它来查询是否包含某个特定字符串,示例代码如下,感兴趣的朋友可以参考下 在sql server中Replace关键字主要是用来将字符串中的某个字符替换成别的字符,今天要逆向思维,它还可以用来查询是否包含某个特定字符串,例如给定下面数据集 期望从这个数据集中获取包含"aaa"字符的记录,注意第2条数据不是包含"aaa",而是包含"aaaa".期望的"&q

如何在access中查询统计带分号的字符串数据?

问题描述 如何在access中查询统计带分号的字符串数据? 有一表内容大致如下:人员姓名 | 金额甲:乙:丁: | 60甲:乙: | 40乙:丁: | 40丙: | 20求一查询,平均分金额后合计,可得新表如下:人员姓名 | 金额甲 | 40乙 | 60丙 | 20丁 | 40 即原表中第一行甲乙丙三人平分60,乙得20:第二行甲乙二人平分40,乙得20:第三行同理,新表中乙合计得60. 解决方案 你的统计规则是什么,为什么甲是40? 解决方案二: string[] 数据 = { ""

Replace关键字的妙用查询是否包含某个特定字符串_MsSql

在sql server中Replace关键字主要是用来将字符串中的某个字符替换成别的字符,今天要逆向思维,它还可以用来查询是否包含某个特定字符串,例如给定下面数据集  期望从这个数据集中获取包含"aaa"字符的记录,注意第2条数据不是包含"aaa",而是包含"aaaa".期望的""结果如下:  传统的思维肯定是想如何查出包含有3个a的字符串,有的人会像用like,但这样会连同4个a也查出来.这里我们就思考用Replace替换掉

Replace关键字的妙用查询是否包含某个特定字符串

在sql server中Replace关键字主要是用来将字符串中的某个字符替换成别的字符,今天要逆向思维,它还可以用来查询是否包含某个特定字符串,例如给定下面数据集   期望从这个数据集中获取包含"aaa"字符的记录,注意第2条数据不是包含"aaa",而是包含"aaaa".期望的""结果如下:   传统的思维肯定是想如何查出包含有3个a的字符串,有的人会像用like,但这样会连同4个a也查出来.这里我们就思考用Replace替

IP查询接口地址库及其简单使用方法

这里分享几个目前能用的,大家各取所需吧. 一.淘宝IP地址库 *. 网址:http://ip.taobao.com/ *. 请求接口(GET):http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址] *. 返回数据格式:(json格式的)国家 .省(自治区或直辖市).市(县).运营商.例如: {"code":0,"data":{"ip":"210.75.225.254",&qu

C++常用字符串分割方法实例汇总_C 语言

本文实例汇总了C++常用字符串分割方法,分享给大家供大家参考.具体分析如下: 我们在编程的时候经常会碰到字符串分割的问题,这里总结下,也方便我们以后查询使用. 一.用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串. 参数说明:str为要分解的字符串,delim为分隔符字符串. 返回值:从str开头开始的一个个被分割的串.当没有被分割的串时则返回NULL. 其它:strtok函数线程不安全

php比较相似字符串的方法_php技巧

本文实例讲述了php比较相似字符串的方法.分享给大家供大家参考.具体分析如下: 这里通过php的similar_text函数比较两个字符串的相似性. $word2compare = "stupid"; $words = array( 'stupid', 'stu and pid', 'hello', 'foobar', 'stpid', 'upid', 'stuuupid', 'sstuuupiiid', ); while(list($id, $str) = each($words))