
similar_text 함수는 두 문자열의 유사도 퍼센트를 계산할 때, 두 문자열의 길이도 고려합니다. 따라서, 두 문자열의 길이가 다를수록 유사도 퍼센트가 낮아질 수 있습니다.
예를 들어, "apple"과 "app"의 유사도 퍼센트를 계산할 때, "apple"은 5글자이고 "app"은 3글자이므로, 유사도 퍼센트가 60%로 계산됩니다. 만약 두 문자열의 길이가 같다면, 유사도 퍼센트가 100%로 계산됩니다.
이 문제를 해결하기 위해서는, 두 문자열의 길이를 고려하지 않고 유사도 퍼센트를 계산하는 방법을 사용해야 합니다. PHP에서 제공하는 levenshtein_distance 함수를 사용하여 두 문자열의 유사도 퍼센트를 계산할 수 있습니다.
다음은 PHP에서 levenshtein_distance 함수를 사용하여 두 문자열의 유사도 퍼센트를 계산하는 예제입니다.
#hostingforum.kr
php
function levenshtein_distance($str1, $str2) {
$m = strlen($str1);
$n = strlen($str2);
$dp = array_fill(0, $m + 1, array_fill(0, $n + 1, 0));
for ($i = 0; $i <= $m; $i++) {
$dp[$i][0] = $i;
}
for ($j = 0; $j <= $n; $j++) {
$dp[0][$j] = $j;
}
for ($i = 1; $i <= $m; $i++) {
for ($j = 1; $j <= $n; $j++) {
if ($str1[$i - 1] == $str2[$j - 1]) {
$dp[$i][$j] = $dp[$i - 1][$j - 1];
} else {
$dp[$i][$j] = 1 + min($dp[$i - 1][$j], $dp[$i][$j - 1], $dp[$i - 1][$j - 1]);
}
}
}
return $dp[$m][$n];
}
function similar_text($str1, $str2) {
$distance = levenshtein_distance($str1, $str2);
$max_len = max(strlen($str1), strlen($str2));
return (1 - ($distance / $max_len)) * 100;
}
$word1 = "apple";
$word2 = "app";
echo similar_text($word1, $word2);
이 예제에서는 levenshtein_distance 함수를 사용하여 두 문자열의 유사도 퍼센트를 계산합니다. levenshtein_distance 함수는 두 문자열의 유사도 퍼센트를 계산할 때, 두 문자열의 길이를 고려하지 않습니다. 따라서, 두 문자열의 길이가 다를수록 유사도 퍼센트가 낮아지지 않습니다.
2025-07-09 11:04