라이브러리
[PHP] soundex - 문자열의 soundex 키 계산
Soundex란?
Soundex는 미국의 통계학자 로버트 카일의 이름을 따서 명명된 음성 인식 알고리즘입니다. Soundex는 이름을 음성으로 변환하여 유사한 이름을 찾을 수 있도록 도와주는 알고리즘입니다. Soundex는 이름의 발음을 기반으로 이름을 분류하는 방법으로, 이름의 첫 번째 글자와 마지막 글자를 제외한 나머지 글자를 4개의 그룹으로 나누어 그룹별로 코드를 부여합니다.
Soundex 알고리즘
Soundex 알고리즘은 다음과 같은 단계로 진행됩니다.
1. 이름의 첫 번째 글자와 마지막 글자를 제외한 나머지 글자를 4개의 그룹으로 나누어 그룹별로 코드를 부여합니다.
2. 그룹별로 코드를 부여하는 방법은 다음과 같습니다.
* BFPV: 1
* CGJKQSXZ: 2
* DT: 3
* L: 4
* MN: 5
* R: 6
* AEIOUHWY: 0
3. 코드를 부여한 후, 0으로 시작하는 그룹은 제거합니다.
4. 코드를 부여한 후, 0으로 끝나는 그룹은 제거합니다.
5. 코드를 부여한 후, 0으로 시작하는 그룹과 0으로 끝나는 그룹이 모두 제거된 경우, 0000을 부여합니다.
PHP에서 Soundex 구현
PHP에서 Soundex를 구현하는 방법은 다음과 같습니다.
#hostingforum.kr
php
function soundex($name) {
$name = strtoupper($name);
$code = '';
// 이름의 첫 번째 글자와 마지막 글자를 제외한 나머지 글자를 4개의 그룹으로 나누어 그룹별로 코드를 부여합니다.
$groups = str_split(substr($name, 1, -1));
// 그룹별로 코드를 부여하는 방법은 다음과 같습니다.
$codes = array(
'BFPV' => 1,
'CGJKQSXZ' => 2,
'DT' => 3,
'L' => 4,
'MN' => 5,
'R' => 6,
'AEIOUHWY' => 0
);
foreach ($groups as $group) {
foreach ($codes as $key => $value) {
if (strpos($key, $group) !== false) {
$code .= $value;
break;
}
}
}
// 코드를 부여한 후, 0으로 시작하는 그룹은 제거합니다.
$code = ltrim($code, '0');
// 코드를 부여한 후, 0으로 끝나는 그룹은 제거합니다.
$code = rtrim($code, '0');
// 코드를 부여한 후, 0으로 시작하는 그룹과 0으로 끝나는 그룹이 모두 제거된 경우, 0000을 부여합니다.
if (empty($code)) {
$code = '0000';
}
return $code;
}
// 예제
$name = 'kim';
echo soundex($name); // K000
$name = 'park';
echo soundex($name); // P620
위 예제에서, `soundex` 함수는 이름을 Soundex 알고리즘에 따라 코드를 부여합니다. `soundex` 함수는 이름의 첫 번째 글자와 마지막 글자를 제외한 나머지 글자를 4개의 그룹으로 나누어 그룹별로 코드를 부여합니다. 그룹별로 코드를 부여하는 방법은 위에서 설명한 바와 같습니다. 코드를 부여한 후, 0으로 시작하는 그룹은 제거합니다. 코드를 부여한 후, 0으로 끝나는 그룹은 제거합니다. 코드를 부여한 후, 0으로 시작하는 그룹과 0으로 끝나는 그룹이 모두 제거된 경우, 0000을 부여합니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.