function getMaxSimilarity($str, $arr){
$newarr = [];
foreach($arr as $word){
if($str == $word) return $word;
$num = 0; // 记录每个字符出现的次数
for($i=0; $i<mb_strlen($str); $i++){
if(stripos($word, mb_substr($str, $i, 1))){
$num++;
}
}
array_push($newarr, [
'length' =>$num,
'value' => $word
]);
unset($num);
}
$keys = 0; // 默认第一条匹配度最大
foreach($newarr as $key => $val){
if($val['length'] > $newarr[$keys]['length']){
$keys = $key;
}
}
// 返回匹配度大于80%的数据
if($newarr[$keys]['length'] > mb_strlen($str)*0.8){
return $newarr[$keys]['value'];
}else{
return '没有符合条件的数据';
}
}
$united_state_list = array(
'你好,世界', '你好,小明','早安世界','你是世界上最幸福的人了吧', '你好世界'
);
$result = getMaxSimilarity('世界', $united_state_list);
var_dump($result);
php实现获取指定字符在数组中匹配度最高的一项(最低匹配度80%的数据)
于 2023-04-07 14:37:38 首次发布