개발자 인생/PHP

[PHP] 한글 단어를 '이/가', '을/를' 조사를 붙여주는 함수

잘나가는개발자 2025. 3. 12. 16:04
728x90
반응형
SMALL

PHP로 한국어 격조사 자동 추가하기

안녕하세요! 오늘은 PHP를 사용하여 한국어 단어에 격조사를 자동으로 추가하는 방법에 대해 알아보겠습니다. 특히 주격 조사 '이/가'와 목적격 조사 '을/를'을 단어의 받침 유무에 따라 올바르게 추가하는 함수를 만들어 보겠습니다.

격조사란?

격조사는 문장에서 단어의 문법적 기능을 나타내는 조사입니다. '이/가'는 주격 조사로 주어를 표시하고, '을/를'은 목적격 조사로 목적어를 표시합니다.

PHP 함수 구현

다음은 단어에 격조사를 추가하는 PHP 함수입니다:

function addParticle($word, $type = 'subject') {
    $lastChar = mb_substr($word, -1, 1, 'UTF-8');

    $codePoint = mb_ord($lastChar, 'UTF-8');
    if ($codePoint >= 0xAC00 && $codePoint <= 0xD7A3) {
        $jongseongIndex = ($codePoint - 0xAC00) % 28;
        $hasJongseong = $jongseongIndex !== 0;
    } else {
        $hasJongseong = false;
    }

    switch ($type) {
        case 'subject':
            return $word . ($hasJongseong ? '이' : '가');
        case 'object':
            return $word . ($hasJongseong ? '을' : '를');
        default:
            return $word;
    }
}

함수 설명

  1. mb_substr()로 단어의 마지막 글자를 추출합니다.
  2. mb_ord()로 마지막 글자의 유니코드 값을 얻습니다.
  3. 한글 유니코드 범위(0xAC00 ~ 0xD7A3)인지 확인합니다.
  4. 한글이면 받침 유무를 계산하고, 아니면 받침이 없다고 가정합니다.
  5. 받침 유무와 조사 유형에 따라 적절한 조사를 추가합니다.

사용 예시

$words = ['학생', '의사', '대행사명', '컴퓨터'];
foreach ($words as $word) {
    echo $word . ' (주격): ' . addParticle($word, 'subject') . "\n";
    echo $word . ' (목적격): ' . addParticle($word, 'object') . "\n\n";
}

결과

학생 (주격): 학생이
학생 (목적격): 학생을

의사 (주격): 의사가
의사 (목적격): 의사를

대행사명 (주격): 대행사명이
대행사명 (목적격): 대행사명을

컴퓨터 (주격): 컴퓨터가
컴퓨터 (목적격): 컴퓨터를

이 함수를 사용하면 한국어 텍스트 처리나 자연어 생성 시 매우 유용할 것입니다. 문장을 더 자연스럽게 만들거나, 사용자 입력을 처리할 때 활용할 수 있습니다.

앞으로 이 함수를 확장하여 다른 조사들도 처리할 수 있도록 개선할 수 있겠죠? 여러분의 프로젝트에 맞게 수정하고 발전시켜 보세요!

728x90
반응형
LIST