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

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

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

게시글 목록

번호 제목
17591
17590
17589
17588
17587
17584
17583
17582
17581
17579
17577
17575
17574
17573
17572
17569
17564
17560
17559
17555
17554
17553
17552
17549
17548
17547
17542
17533
17531
17524