PHP 한글 종성 유무의 판별

sookyeong·2022년 3월 30일
0

한글 종성 유무의 판별


1. 전체 코드

$last = iconv_substr($search, -1, 1, "utf-8");
$dec = substr(mb_convert_encoding($last,'HTML-ENTITIES','UTF-8'),2,-1);
$nums = array("3","6","0");

if($dec>=44032 && $dec<=55203){
	if(($dec-44032)%28!=0){
		$josa = "으로";
	}else{
		$josa = "로";
	}
}elseif(in_array($last, $nums)){
	$josa = "으로";
}else{
	$josa = "로";
}

2. 한 줄 씩 뜯어보기

  1. 검색어의 마지막 글자를 가져온다.
$last = iconv_substr($search, -1, 1, "utf-8");

한글을 있는 그대로 자르기 위해 iconv_substr를 사용한다.

  1. $last를 10진수로 바꿔준다.
$dec = substr(mb_convert_encoding($last,'HTML-ENTITIES','UTF-8'),2,-1);
  1. 발음할 때 삼, 육, 십이 되는 숫자를 배열에 넣어준다.
$nums = array("3","6","0");
  1. 해당 문자가 한글인지 판별한다.
if($dec>=44032 && $dec<=55203)
  1. 해당 문자에서 44032을 뺀 값이 28로 나누어 떨어지지 않는다면 → 받침이 있는 글자이다.
if(($dec-44032)%28!=0)

한글 유니코드 = 44032 + (초성 21 + 중성) 28 + 종성

따라서 종성이 있는 글자는 유니코드-44032를 28로 나누었을 때 나머지가 남게 된다.

참고로 위 공식에서의 초성, 중성, 종성은 각 자모의 Index를 말한다.

  1. 경우에 따른 조사의 형태를 정해준다.
$josa = "으로" / $josa = "로"

3. 결과

profile
actions speak louder than words

0개의 댓글