한글 풀어쓰기. 비혼 → ㅂㅣㅎㅗㄴ > Tip&Tech

본문 바로가기

Tip&Tech

한글 풀어쓰기. 비혼 → ㅂㅣㅎㅗㄴ

페이지 정보

작성자 BiHon 댓글 0건 조회 3,846회 작성일 14-02-14 12:59

본문

그냥 옛날 생각에 간단하게….

▶ UTF-8 기준입니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<?php
function 조합풀기($s)
{
    static $h = array(
        array(2=>'ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ','ㅅ','ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ'),
        array(3=>'ㅏ','ㅐ','ㅑ','ㅒ','ㅓ','','','ㅔ','ㅕ','ㅖ','ㅗ','ㅘ','ㅙ','','','ㅚ','ㅛ','ㅜ','ㅝ','ㅞ','ㅟ','','','ㅠ','ㅡ','ㅢ','ㅣ'),
        array(2=>'ㄱ','ㄲ','ㄳ','ㄴ','ㄵ','ㄶ','ㄷ','ㄹ','ㄺ','ㄻ','ㄼ','ㄽ','ㄾ','ㄿ','ㅀ','ㅁ','','ㅂ','ㅄ','ㅅ','ㅆ','ㅇ','ㅈ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ'),
        );
    $s = iconv('UTF-8','JOHAB//IGNORE',$s[0]);
    for($i=0,$l=strlen($s),$r='';$i<$l;$i+=2)
    {
        $t = sprintf('%08b%08b',ord($s[$i]),ord($s[$i+1]));
        for($j=1,$k=0;$j<16;$j+=5,$k++) $r.= $h[$k][bindec(substr($t,$j,5))];
    }
    return $r;
}
function 풀어쓰기($s) { return preg_replace_callback('/[가-힣]+/u','조합풀기',$s); }
echo 풀어쓰기('2014년 새해 복 많이 받으세요!');
────────────────────────────────────────

▶ 실행 결과
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2014ㄴㅕㄴ ㅅㅐㅎㅐ ㅂㅗㄱ ㅁㅏㄶㅇㅣ ㅂㅏㄷㅇㅡㅅㅔㅇㅛ!
────────────────────────────────────────

댓글목록

등록된 댓글이 없습니다.

회원로그인


Copyright © 1998~2019 DreamPHP.com All rights reserved.