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

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

· 5년 전 · 2640 · 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 존재하긴하네요!
베이식 코드지만요

게시글 목록

번호 제목
17657
17655
17654
17653
17652
17651
17650
17642
17633
17632
17631
17630
17628
17624
17623
17620
17618
17617
17614
17612
17611
17610
17609
17608
17607
17604
17603
17602
17600
17594