$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 = "로";
}
- 검색어의 마지막 글자를 가져온다.
$last = iconv_substr($search, -1, 1, "utf-8");
한글을 있는 그대로 자르기 위해 iconv_substr를 사용한다.
- $last를 10진수로 바꿔준다.
$dec = substr(mb_convert_encoding($last,'HTML-ENTITIES','UTF-8'),2,-1);
- 발음할 때 삼, 육, 십이 되는 숫자를 배열에 넣어준다.
$nums = array("3","6","0");
- 해당 문자가 한글인지 판별한다.
if($dec>=44032 && $dec<=55203)
- 해당 문자에서 44032을 뺀 값이 28로 나누어 떨어지지 않는다면 → 받침이 있는 글자이다.
if(($dec-44032)%28!=0)
한글 유니코드 = 44032 + (초성 21 + 중성) 28 + 종성
따라서 종성이 있는 글자는 유니코드-44032를 28로 나누었을 때 나머지가 남게 된다.
참고로 위 공식에서의 초성, 중성, 종성은 각 자모의 Index를 말한다.
- 경우에 따른 조사의 형태를 정해준다.
$josa = "으로" / $josa = "로"