테스트 사이트 - 개발 중인 베타 버전입니다

한글 초,중,종성 분리하기

· 5년 전 · 2637 · 3

1년 2개월 전에 깃허브에 올려둔 자료입니다.

의외로 필요한 분들이 많을까 올려드립니다.

 

원본 코드(js판) 출처는 명신님의 블로그(IT 소시민의 소소한 이야기) -  http://dream.ahboom.net/entry/%ED%95%9C%EA%B8%80-%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C-%EC%9E%90%EC%86%8C-%EB%B6%84%EB%A6%AC-%EB%B0%A9%EB%B2%95 입니다.

 

js의 charCodeAt를 PHP에서 사용하기 위해 참고한 소스코드는 다음 출처에 있습니다.

https://stackoverflow.com/questions/40841149/js-charcodeat-equivalent-in-php-with-full-unicode-and-emoji-compatibility/40867438#40867438

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
    /* 자바스크립트 한글 자모 분리를 PHP에서.
    // http://dream.ahboom.net/entry/%ED%95%9C%EA%B8%80-%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C-%EC%9E%90%EC%86%8C-%EB%B6%84%EB%A6%AC-%EB%B0%A9%EB%B2%95
    */
    $jaum = array('ㄱ''ㄲ''ㄴ''ㄷ''ㄸ''ㄹ''ㅁ''ㅂ''ㅃ''ㅅ''ㅆ''ㅇ''ㅈ''ㅉ''ㅊ''ㅋ''ㅌ''ㅍ''ㅎ');
    $moum = array('ㅏ''ㅐ''ㅑ''ㅒ''ㅓ''ㅔ''ㅕ''ㅖ''ㅗ''ㅘ''ㅙ''ㅚ''ㅛ''ㅜ''ㅝ''ㅞ''ㅟ''ㅠ''ㅡ''ㅢ''ㅣ');
    $bachim = array('''ㄱ''ㄲ''ㄳ''ㄴ''ㄵ''ㄶ''ㄷ''ㄹ''ㄺ''ㄻ''ㄼ''ㄽ''ㄾ''ㄿ''ㅀ''ㅁ''ㅂ''ㅄ''ㅅ''ㅆ''ㅇ''ㅈ''ㅊ''ㅌ''ㅍ''ㅎ');
 
    /* // 테스트용 문자열
    */
    $munja = "맑";
    
    /* // 한글 이외 다른 문자 제거
    */
    $munja = preg_replace('[^가-힣]'''$munja);
 
    /*
    // 자바스크립트의 charCodeAt 구현 코드.
    // https://stackoverflow.com/questions/40841149/js-charcodeat-equivalent-in-php-with-full-unicode-and-emoji-compatibility/40867438#40867438
    */
    function JS_charCodeAt($str$index) {
        $utf16 = mb_convert_encoding($str'UTF-16LE''UTF-8');
        return ord($utf16[$index*2]) + (ord($utf16[$index*2+1]) << 8);
    }
 
    $munjaCode = JS_charCodeAt($munja0);
    /*
    // 0xAC00 => 한글 첫 글자인 '가'
    */
    $munjaBeonho = $munjaCode - 0xAC00;
 
    $jong = $munjaBeonho % 28;
    $jung = (($munjaBeonho - $jong/ 28) % 21;
    $cho =  ((($munjaBeonho - $jong/ 28- $jung/ 21;
    
    echo "Cho = {$jaum[$cho]}".PHP_EOL;
    echo "Jung = {$moum[$jung]}".PHP_EOL;
    echo "Jong = {$bachim[$jong]}".PHP_EOL;
cs

 

$munja 부분에 원하는 단어를 넣으시면 됩니다.

예시) 강아지 => ㄱㅏㅇㅇㅏㅈㅣ

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 3개

5년 전
좋은정보 감사합니다 !!
5년 전
좋은정보네요!
혹시 합치는것도 만드실수 있으실까요?
5년 전
https://dorobo.tistory.com/354 존재하긴하네요!
베이식 코드지만요

게시글 목록

번호 제목
17819
17818
17817
17816
17814
17811
17810
17809
17808
17803
17799
17798
17797
17795
17794
17793
JavaScript JSON Beautify
17790
17789
17786
17774
17760
17755
17750
17729
17722
17714
17708
17686
17676
17666