当前位置:首页 > 代码 > 正文

php源代码相似度查找(php 字符串相似度)

admin 发布:2022-12-19 23:22 160


今天给各位分享php源代码相似度查找的知识,其中也会对php 字符串相似度进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

php在数组中查询字符串相似度并返回键名或者键值

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

PHP代码如下:

1.function closest_word($input, $words) {

2. $shortest = -1;

3. foreach ($words as $word) {

4. $lev = levenshtein($input, $word);

5. if ($lev == 0) {

6. $closest = $word;

7. $shortest = 0;

8. break;

9. }

10. if ($lev = $shortest || $shortest 0) {

11. $closest = $word;

12. $shortest = $lev;

13. }

14. }

15. return $closest;

16.}

2. 代码示例如下:

// 根据传入的州名(可能客户有输错),返回相似度最高的州名称

$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 怎么匹配两个字符串的相似度

php自带一个函数similar_text,可以计算两个字符串的相似度,但是这个的准确性、速度不是很好。网上有很多其他的方法和现成的包,你可以搜索看看。下面简单列举一个类

class LCS {

var $str1;

var $str2;

var $c = array();

/*返回串一和串二的最长公共子序列*/

function getLCS($str1, $str2, $len1 = 0, $len2 = 0) {

$this-str1 = $str1;

$this-str2 = $str2;

if ($len1 == 0) $len1 = strlen($str1);

if ($len2 == 0) $len2 = strlen($str2);

$this-initC($len1, $len2);

return $this-printLCS($this-c, $len1 - 1, $len2 - 1);

}

/*返回两个串的相似度*/

function getSimilar($str1, $str2) {

$len1 = strlen($str1);

$len2 = strlen($str2);

$len = strlen($this-getLCS($str1, $str2, $len1, $len2));

return $len * 2 / ($len1 + $len2);

}

function initC($len1, $len2) {

for ($i = 0; $i $len1; $i++) $this-c[$i][0] = 0;

for ($j = 0; $j $len2; $j++) $this-c[0][$j] = 0;

for ($i = 1; $i $len1; $i++) {

for ($j = 1; $j $len2; $j++) {

if ($this-str1[$i] == $this-str2[$j]) {

$this-c[$i][$j] = $this-c[$i - 1][$j - 1] + 1;

} else if ($this-c[$i - 1][$j] = $this-c[$i][$j - 1]) {

$this-c[$i][$j] = $this-c[$i - 1][$j];

} else {

$this-c[$i][$j] = $this-c[$i][$j - 1];

}

}

}

}

function printLCS($c, $i, $j) {

if ($i == 0 || $j == 0) {

if ($this-str1[$i] == $this-str2[$j]) return $this-str2[$j];

else return "";

}

if ($this-str1[$i] == $this-str2[$j]) {

return $this-printLCS($this-c, $i - 1, $j - 1).$this-str2[$j];

} else if ($this-c[$i - 1][$j] = $this-c[$i][$j - 1]) {

return $this-printLCS($this-c, $i - 1, $j);

} else {

return $this-printLCS($this-c, $i, $j - 1);

}

}

}

PHP如何计算两个字符串的相似度?

similar_text('my name is php', 'my name is java', $result);

var_dump($result);

参考链接:网页链接

关于php源代码相似度查找和php 字符串相似度的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/29929.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载