levenshtein() 함수는 두 문자열 간의 레벤슈타인 거리(Levenshtein Distance)를 계산하는 데 사용되는 PHP 내장 함수입니다. 레벤슈타인 거리란 첫 번째 문자열을 두 번째 문자열로 변환하기 위해 필요한 최소한의 문자 삽입(insert), 교체(replace), 삭제(delete) 작업 횟수를 의미합니다. 이 함수는 대소문자를 구분하지 않습니다.
구문
levenshtein(str1, str2, insert, replace, delete)
매개변수
str1 − 비교할 첫 번째 문자열입니다.
str2 − 비교할 두 번째 문자열입니다.
insert − 문자를 삽입할 때 부여되는 비용(기본값: 1)입니다.
replace − 문자를 교체할 때 부여되는 비용(기본값: 1)입니다.
delete − 문자를 삭제할 때 부여되는 비용(기본값: 1)입니다.
반환 값
levenshtein() 함수는 인자로 전달된 두 문자열 간의 레벤슈타인 거리를 정수 형태로 반환합니다. 만약 문자열 중 하나라도 255자를 초과하면 -1을 반환합니다.
예제
다음은 levenshtein() 함수의 기본적인 사용 예제입니다.
<?php
echo levenshtein("Welcome","elcome");
?>
출력 결과
1
위 예제에서 "Welcome"과 "elcome"은 한 글자('W')만 차이가 나므로, 결과로 1이 출력됩니다.
활용 예시
레벤슈타인 거리는 맞춤법 검사, 검색어 자동 완성, 오타 수정 등 유사 문자열을 찾아야 하는 다양한 분야에서 활용됩니다. 아래는 주어진 단어 목록 중 입력 문자열과 가장 유사한 단어를 찾는 실전 예제입니다.
<?php
$words = array("apple", "apply", "ample", "maple");
$input = "aple";
$shortest = -1;
foreach ($words as $word) {
$lev = levenshtein($input, $word);
if ($shortest < 0 || $lev < $shortest) {
$closest = $word;
$shortest = $lev;
}
}
echo "가장 유사한 단어: " . $closest;
?>
출력 결과
가장 유사한 단어: apple
이처럼 levenshtein() 함수를 활용하면 사용자가 잘못 입력한 단어에 대해 가장 근접한 올바른 단어를 제안하는 기능을 손쉽게 구현할 수 있습니다.