OSDN Git Service

applied some bug fixes
[nucleus-jp/nucleus-jp-ancient.git] / euc / nucleus / libs / mb_emulator / mb-emulator.php
index 96b6f2a..99e0955 100755 (executable)
@@ -4,7 +4,7 @@
  *\r
  * license based on GPL(GNU General Public License)\r
  *\r
- * Ver.0.35 (2004/9/26)\r
+ * Ver.0.37 (2005/1/30)\r
  */\r
 \r
 \r
@@ -44,6 +44,7 @@ if (!(mb_detect_order($ini_file['detect_order'])))
 $sjis_match = "[\x81-\x9F,\xE0-\xFC]([\x40-\xFC])|[\x01-\x7F]|[\xA0-\xDF]";\r
 $euc_match = "[\xa1-\xfe]([\xa1-\xfe])|[\x01-\x7f]|\x8e([\xa0-\xdf])";\r
 $utf8_match = "[\x01-\x7F]|[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF][\x80-\xBF]";\r
+$jis_match = "(?:^|\x1b\(\x42)([^\x1b]*)|(?:\x1b\\$\x42([^\x1b]*))|(?:\x1b\(I([^\x1b]*))";\r
 \r
 function mb_language($language)\r
 {\r
@@ -280,10 +281,8 @@ function _sub_jtosj($match)
 \r
 function _jistosjis(&$str)\r
 {\r
-       global $_euctosjis_byte1, $_euctosjis_byte2;\r
-       \r
+       global $_euctosjis_byte1, $_euctosjis_byte2, $jis_match;\r
        \r
-       $jis_match = "(?:^|\x1b\(B)([^\x1b]*)|\x1b$B([^\x1b]*)|\x1b\(I([^\x1b]*)";\r
        $max = preg_match_all("/$jis_match/", $str, $allchunks, PREG_SET_ORDER);  // \95\8e\9a\8eí\82²\82Æ\82Ì\94z\97ñ\82É\95ª\89ð\r
        $st = '';\r
        for ($i = 0; $i < $max; ++$i) {\r
@@ -1235,7 +1234,7 @@ function _sub_qponechar($str, &$len)
 \r
 function _sub_quoted_printable_encode($str, $encoding, $maxline, $linefeed)\r
 {\r
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match;\r
+       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match, $jis_match;\r
        switch ($_mb_encoding[$encoding]) {\r
                case 0 : //ascii\r
                        $allchars[0] = unpack("c*", $str);\r
@@ -1251,7 +1250,6 @@ function _sub_quoted_printable_encode($str, $encoding, $maxline, $linefeed)
                        $max = preg_match_all("/$utf8_match/", $str, $allchars);\r
                        break;\r
                case 3 : //jis\r
-                       $jis_match = "(?:^|\x1b\(B)([^\x1b]*)|\x1b$B([^\x1b]*)|\x1b\(I([^\x1b]*)";\r
                        $max = preg_match_all("/$jis_match/", $str, $allchunks, PREG_SET_ORDER);  // \95\8e\9a\8eí\82²\82Æ\82Ì\94z\97ñ\82É\95ª\89ð\r
                        $st = ''; // quoted printable\95Ï\8a·\8cã\82Ì\95\8e\9a\97ñ\r
                        $len = $maxline;  // \82»\82Ì\8ds\82É\92Ç\89Á\89Â\94\\82È\83o\83C\83g\90\94\r
@@ -1339,7 +1337,7 @@ function _sub_quoted_printable_encode($str, $encoding, $maxline, $linefeed)
 \r
 function _sub_encode_base64($str, $encoding, $maxline , $linefeed)\r
 {\r
-       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match;\r
+       global $_mb_encoding, $euc_match, $utf8_match, $sjis_match, $jis_match;\r
        switch ($_mb_encoding[$encoding]) {\r
                case 0 : //ascii\r
                        return chunk_split( base64_encode($str) , $maxline, $linefeed);\r
@@ -1353,7 +1351,6 @@ function _sub_encode_base64($str, $encoding, $maxline , $linefeed)
                        $max = preg_match_all("/$utf8_match/", $str, $allchars);\r
                        break;\r
                case 3 : //jis\r
-                       $jis_match = "(?:^|\x1b\(B)([^\x1b]*)|\x1b$B([^\x1b]*)|\x1b\(I([^\x1b]*)";\r
                        $max = preg_match_all("/$jis_match/", $str, $allchunks, PREG_SET_ORDER);  // \95\8e\9a\8eí\82²\82Æ\82Ì\94z\97ñ\82É\95ª\89ð\r
                        $st = ''; // BASE64\95Ï\8a·\8cã\82Ì\95\8e\9a\97ñ\r
                        $maxbytes = floor($maxline * 3 / 4);  //1\8ds\82É\95Ï\8a·\89Â\94\\82È\83o\83C\83g\90\94\r