한글 영타로. 비혼 → qlghs > Tip&Tech

본문 바로가기

Tip&Tech

한글 영타로. 비혼 → qlghs

작성일 14-02-14 13:11

페이지 정보

작성자 BiHon 조회 3,246회 댓글 1건

본문

한글 풀어쓰기에서 배열 값을 '영어'로만 변경.

▶ UTF-8 기준입니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<?php
function 조합풀기($s)
{
    static $h = array(
        array(2=>'r','R','s','e','E','f','a','q','Q','t','T','d','w','W','c','z','x','v','g'),
        array(3=>'k','o','i','O','j','','','p','u','P','h','hk','ho','','','hl','y','n','nj','np','nl','','','b','m','ml','l'),
        array(2=>'r','R','rt','s','sw','sg','e','f','fr','fa','fq','ft','fx','fv','fg','a','','q','qt','t','T','d','w','c','z','x','v','g'),
        );
    $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년 새해 복 많이 받으세요!');
────────────────────────────────────────

▶ 실행 결과
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2014sus togo qhr aksgdl qkedmtpdy!
────────────────────────────────────────

* 반대는 나중에 기회되면….

댓글목록

BiHon님의 댓글

profile_image BiHon
작성일

function han_split($m)
{
    static $h = array(
        array(2=>'ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ','ㅅ','ㅆ'
            ,'ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ'),
        array(3=>'ㅏ','ㅐ','ㅑ','ㅒ','ㅓ',10=>'ㅔ','ㅕ','ㅖ','ㅗ','ㅘ','ㅙ'
            ,18=>'ㅚ','ㅛ','ㅜ','ㅝ','ㅞ','ㅟ',26=>'ㅠ','ㅡ','ㅢ','ㅣ'),
        array(2=>'ㄱ','ㄲ','ㄳ','ㄴ','ㄵ','ㄶ','ㄷ','ㄹ','ㄺ','ㄻ','ㄼ','ㄽ'
            ,'ㄾ','ㄿ','ㅀ','ㅁ','','ㅂ','ㅄ','ㅅ','ㅆ','ㅇ','ㅈ','ㅊ','ㅋ'
            ,'ㅌ','ㅍ','ㅎ'),
        );
    static $dic = array();
    $r = '';
    if ( isset($dic[$m[0]]) ) return $dic[$m[0]];
    $i = iconv('UTF-8','JOHAB//IGNORE',$m[0]);
    $s = sprintf('%08b%08b',ord($i[0]),ord($i[1]));
    $r.= isset($h[0][($p=bindec(substr($s,1,5)))])?$h[0][$p]:'';
    $r.= isset($h[1][($p=bindec(substr($s,6,5)))])?$h[1][$p]:'';
    $r.= isset($h[2][($p=bindec(substr($s,11,5)))])?$h[2][$p]:'';
    $dic[$m[0]] = $r;
    return $r;
}
echo preg_replace_callback('/[가-힣]/u','han_split','자음 모음 분리');
// ㅈㅏㅇㅡㅁ ㅁㅗㅇㅡㅁ ㅂㅜㄴㄹㅣ

Copyright © 1998~2019 DreamPHP.com All rights reserved.
PC 버전으로 보기