iconv() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ÇÑ±Û Âɰ³±â | ÀÛ¼ºÀÏ : 2003/12/26 18:43 |
![]() |
Á¶È¸¼ö : 8443 |
![]() | |||||||||
¼Ò½ºÀÚü -> http://why-not.193d.com/ptext/test.php (»ç¶óÁ³À½ -_-) °£´ÜÇÑ ¸Þ¸ðÀå -> http://chak-yi.net/ ----------------------------- <?php $jamo = array( /*0 1 2 3 4 5 6 7 8 9 */ "¤¡", "¤¢", "¤£", "¤¤", "¤¥", "¤¦", "¤§", "¤¨", "¤©", "¤ª", /* 0~9 */ "¤«", "¤¬", "¤", "¤®", "¤¯", "¤°", "¤±", "¤²", "¤³", "¤´", /* 10~19 */ "¤µ", "¤¶", "¤·", "¤¸", "¤¹", "¤º", "¤»", "¤¼", "¤½", "¤¾", /* 20~29 */ "¤¿", "¤À", "¤Á", "¤Â", "¤Ã", "¤Ä", "¤Å", "¤Æ", "¤Ç", "¤È", /* 30~39 */ "¤É", "¤Ê", "¤Ë", "¤Ì", "¤Í", "¤Î", "¤Ï", "¤Ð", "¤Ñ", "¤Ò", /* 40~49 */ "¤Ó", "¡¡"); /* 50~51 */ $jo['cho'] = array( 51, 51, /* ¤¡ ¤¢ ¤¤ ¤§ ¤¨ ¤© ¤± ¤² ¤³ ¤µ */ 0, 1, 3, 6, 7, 8,16,17,18,20, /* ¤¶ ¤· ¤¸ ¤¹ ¤º ¤» ¤¼ ¤½ ¤¾ */ 21,22,23,24,25,26,27,28,29 ); $jo['jung'] = array( 51, 51, 51, /* ¤¿ ¤À ¤Á ¤Â ¤Ã */ 30,31,32,33,34, 51,51, /* ¤Ä ¤Å ¤Æ ¤Ç ¤È ¤É */ 35,36,37,38,39,40, 51,51, /* ¤Ê ¤Ë ¤Ì ¤Í ¤Î ¤Ï */ 41,42,43,44,45,46, 51,51, /* ¤Ð ¤Ñ ¤Ò ¤Ó */ 47,48,49,50 ); $jung_div = array( 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, //¤Ç, 0//¤Ç 38 30, //¤Ç, ¤¿, 1//¤È 39 31, //¤Ç, ¤À, 2//¤É 40 51, 51, 50, //¤Ç, ¤Ó, 3//¤Ê 41 51, //¤Ë, 4//¤Ë 42 51, //¤Ì, 5//¤Ì 43 34, //¤Ì, ¤Ã, 6//¤Í 44 35, //¤Ì, ¤Ä, 7//¤Î 45 50, //¤Ì, ¤Ó, 8//¤Ï 46 51, 51, 51, //¤Ð, 9//¤Ð 47 51, //¤Ñ, 10//¤Ñ 48 50, //¤Ñ, ¤Ó 11//¤Ò 49 ); $jo['jong'] = array( 51,51, /* ¤¡ ¤¢ ¤£ ¤¤ ¤¥ ¤¦ ¤§ ¤© ¤ª ¤« */ 0, 1, 2, 3, 4, 5, 6, 8, 9,10, /* ¤¬ ¤ ¤® ¤¯ ¤° ¤± */ 11,12,13,14,15,16, 51, /* ¤² ¤´ ¤µ ¤¶ ¤· ¤¸ ¤º ¤» ¤¼ ¤½ */ 17,19,20,21,22,23,25,26,27,28, /* ¤¾ */ 29, ); function font($text, $max) { global $jamo, $jo, $jung_div; $jcode = w2j($text); for($i=0, $line=0, $line_chk=0; $i < strlen($jcode); $i++) { if( ord($jcode[$i]) < 128 ) { /* ÇѱÛÀ̳ª 2¹ÙÀÌÆ® ¹®ÀÚ°¡ ¾Æ´Ï¸é.. */ if( ord($jcode[$i]) == 32 ) { $str[$line][0] .= " "; $str[$line][1] .= " "; $line_chk += 2; } else if( ord($jcode[$i]) == 13 && ord($jcode[$i+1]) == 10 ) { $i++; $line++; $line_chk=0; } else if( ord($jcode[$i]) > 32 ) { $str[$line][0] .= sprintf("%c", ord($jcode[$i])); $str[$line][1] .= " "; $line_chk++; } } else { $cho = ( ord($jcode[$i]) & 0x7c ) >> 2; $jung = ( (ord($jcode[$i]) & 0x3 ) << 3 ) | ( (ord($jcode[$i+1]) & 0xe0 ) >> 5 ); $jong = ord($jcode[$i+1]) & 0x1f ; if( is_han($cho, $jung, $jong) ) { /* ÇѱÛÀÌ ¸Â´Ù! */ /* printf("%s%s%s ", $jamo[$jo['cho'][$cho]], $jamo[$jo['jung'][$jung]], $jamo[$jo['jong'][$jong]] ); */ $is_one = 0; /* '°ú' -> '°í¤¿' ·Î ºÐ¸® ÇÒ ¶§ '°í' ¸¸µé±â À§ÇØ Àӽà Áß¼º °ª '¤Ç' ÀúÀå¿ë */ $jung_tmp = 0; if( $jung >= 13 && $jung <= 28 ) { /* ¤Ç, ¤È, ¤Ì, ¤Ï.. °°ÀÌ Áß¼ºÀÌ Ãʼº°ú Á¾¼º °¡¿îµ¥ (°ø, ±¤) µé¾î°¥ °æ¿ì.. */ switch($jung) { /* ´Ü¸ðÀ½ÀÏ °æ¿ì $is_one ¼ÂÆÃ */ case 13 : $is_one = 1; /* ¤Ç¤È¤É¤Ê-> ¤Ç */ case 14 : case 15 : case 18 : $jung_tmp = 13; break; case 19 : $is_one = 1; /* ¤Ë */ $jung_tmp = 19; break; case 20 : $is_one = 1; /* ¤Ì¤Í¤Î¤Ï-> ¤Ì */ case 21 : case 22 : case 23 : $jung_tmp = 20; break; case 26 : $is_one = 1; /* ¤Ð */ $jung_tmp = 26; break; case 27 : $is_one = 1; /* ¤Ñ¤Ò-> ¤Ñ */ case 28 : $jung_tmp = 27; break; } $tmp = 1 + ( $jung_tmp << 5 ) | 0x8000 | $cho << 10; $str[$line][0] .= j2w(chr($tmp>>8) . chr($tmp)); } else { $str[$line][0] .= $jamo[$jo['cho'][$cho]]; } if( !$is_one ) { $str[$line][0] .= $jamo[$jung_tmp ? $jung_div[$jung] : $jo['jung'][$jung]] . " "; $str[$line][1] .= "¡¡"; $line_chk += 2; } else $str[$line][0] .= " "; $str[$line][1] .= $jamo[$jo['jong'][$jong]] . " "; $line_chk += 2; } else { /* ÇѱÛÀÌ ¾Æ´Ï³×.. iconv¸¦ ÀÌ¿ëÇØ¼ ¿Ï¼ºÇüÀ» Á¶ÇÕÇüÀ¸·Î ¹Ù²Ù? ÇѱÛÀ» Á¦¿ÜÇÑ 2¹ÙÀÌÆ® ¹®Àڵ鵵 ¹Ù²î´Ï±ñ! ÇѱÛÀ» Á¦¿ÜÇÑ 2¹ÙÀÌÆ® ¹®ÀÚµéÀº ´Ù½Ã ¿Ï¼ºÇüÀ¸·Î! */ $str[$line][0] .= j2w(sprintf("%c%c", ord($jcode[$i]), ord($jcode[$i+1]))); $str[$line][1] .= "¡¡"; $line_chk += 2; } $i++; } if($line_chk >= $max) { $line++; $line_chk = 0; } } for($i=0; $i <= $line; $i++) { if( $i != 0 ) $ret .= "<br>\n"; $ret .= $str[$i][0] . "<br>\n" . $str[$i][1]; } return $ret; } /* ------------------------ ÇÔ¼ö Á¤ÀÇ ------------------------ */ /* º¯È¯µÈ Á¶ÇÕÇü Äڵ尡 ÇѱÛÀÎÁö ¾Æ´ÑÁö */ function is_han($cho, $jung, $jong) { return ( ( $cho > 0 && $cho < 21 ) /* Ãʼº 1~20 */ && ( ( $jung > 1 && $jung < 8 ) || /* Áß¼º 2~7 */ ( $jung > 9 && $jung < 16 ) || /* Áß¼º 10~15 */ ( $jung > 17 && $jung < 24 ) || /* Áß¼º 18~23 */ ( $jung > 25 && $jung < 30 ) /* Áß¼º 26~29 */ ) && ( ( $jong > 0 && $jong < 18 ) || /* Á¾¼º 1~17 */ ( $jong > 18 && $jong < 30 ) /* Á¾¼º 19~29 */ ) ) ? 1 : 0; } /* ¿Ï¼ºÇüÀ» Á¶ÇÕÇüÀ¸·Î */ function w2j($text) { return iconv("cp949","johab",$text); } /* Á¶ÇÕÇüÀ» ¿Ï¼ºÇüÀ¸·Î */ function j2w($text) { return iconv("johab","cp949",$text); } echo font("¿Í¿ì! ¾È³çÇϼ¼¿ä, ¹Ý°©½À´Ï´Ù! 뷁꿐퉾펤", 50); ?> |
![]() |