2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
5 // $Id: mbstring.php,v 1.11 2004/06/19 03:58:43 henoheno Exp $
9 * mbstring extension ¤¬¥µ¡¼¥Ð¡¼Â¦¤Ë¸ºß¤·¤Ê¤¤»þ¤ÎÂåÂشؿô
13 * 1. ¼ÂºÝ¤Ë´Á»ú¥³¡¼¥ÉÊÑ´¹¤ò¹Ô¤ï¤»¤ë¤¿¤á¤Ë¤Ï¡¢ÊÌÅÓjcode¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
15 * http://www.spencernetwork.org/jcode/ ¤è¤êjcode¤òÆþ¼ê¤·¡¢
16 * °Ê²¼¤ÎÍͤËŸ³«¤·¤Æ¤¯¤À¤µ¤¤¡£
18 * -+--- mbstring.php -r--
19 * +-+- jcode_1.34/ dr-x
20 * +--- readme.txt -r--
21 * +--- jcode.phps -r--
22 * +--- jcode_wrapper.php -r--
23 * +--- code_table.ucs2jis -r--
24 * +--- code_table.jis2ucs -r--
26 * 2. EUC-JPÀìÍѤǤ¹¡£(½ÐÎϤµ¤ì¤ë¥Ç¡¼¥¿¤¬EUC-JP¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹)
31 define('JCODE_DIR','./jcode_1.34');
33 if (is_readable(JCODE_DIR . '/jcode_wrapper.php'))
35 require_once(JCODE_DIR . '/jcode_wrapper.php');
38 // jcode¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¡¢¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤ä´Á»ú¥³¡¼¥É¤ò°·¤¨¤Ê¤¤
39 if (!function_exists('jcode_convert_encoding'))
41 // die_message('Multibyte functions cannot be used. Please read "mbstring.php" for an additional installation procedure of "jcode".');
42 function jstrlen($str)
46 function jsubstr($str,$start,$length)
48 return substr($str,$start,$length);
50 function AutoDetect($str)
54 function jcode_convert_encoding($str,$to_encoding,$from_encoding)
60 // mb_convert_encoding -- ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤òÊÑ´¹¤¹¤ë
61 function mb_convert_encoding($str,$to_encoding,$from_encoding='')
63 // ³ÈÄ¥: ÇÛÎó¤ò¼õ¤±¤é¤ì¤ë¤è¤¦¤Ë
64 // mb_convert_variableÂкö
67 foreach ($str as $key=>$value)
69 $str[$key] = mb_convert_encoding($value,$to_encoding,$from_encoding);
73 return jcode_convert_encoding($str,$to_encoding,$from_encoding);
76 // mb_convert_variables -- ÊÑ¿ô¤Îʸ»ú¥³¡¼¥É¤òÊÑ´¹¤¹¤ë
77 function mb_convert_variables($to_encoding,$from_encoding,&$vars)
79 // Ãí: ²ÄÊÑĹ°ú¿ô¤Ç¤Ï¤Ê¤¤¡£init.php¤«¤é¸Æ¤Ð¤ì¤ë1°ú¿ô¤Î¥Ñ¥¿¡¼¥ó¤Î¤ß¤ò¥µ¥Ý¡¼¥È
80 // ÀµÄ¾¤Ë¼ÂÁõ¤¹¤ë¤Ê¤é¡¢²ÄÊÑ°ú¿ô¤ò¥ê¥Õ¥¡¥ì¥ó¥¹¤Ç¼õ¤±¤ëÊýË¡¤¬É¬Í×
81 if (is_array($from_encoding) or $from_encoding == '' or $from_encoding == 'auto')
83 $from_encoding = mb_detect_encoding(join_array(' ',$vars));
85 if ($from_encoding != 'ASCII' and $from_encoding != SOURCE_ENCODING)
87 $vars = mb_convert_encoding($vars,$to_encoding,$from_encoding);
89 return $from_encoding;
92 // Êä½õ´Ø¿ô:ÇÛÎó¤òºÆµ¢Åª¤Ëjoin¤¹¤ë
93 function join_array($glue,$pieces)
96 foreach ($pieces as $piece)
98 $arr[] = is_array($piece) ? join_array($glue,$piece) : $piece;
100 return join($glue,$arr);
103 // mb_detect_encoding -- ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò¸¡½Ð¤¹¤ë
104 function mb_detect_encoding($str,$encoding_list='')
106 static $codes = array(0=>'ASCII',1=>'EUC-JP',2=>'SJIS',3=>'JIS',4=>'UTF-8');
108 // Ãí: $encoding_list¤Ï»ÈÍѤ·¤Ê¤¤¡£
109 $code = AutoDetect($str);
110 if (!array_key_exists($code,$codes))
114 return $codes[$code];
117 // mb_detect_order -- ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¸¡½Ð½ç½ø¤ÎÀßÄê/¼èÆÀ
118 function mb_detect_order($encoding_list=NULL)
120 static $list = array();
122 // Ãí: ¾¤Î´Ø¿ô¤Ë±Æ¶Á¤òµÚ¤Ü¤µ¤Ê¤¤¡£¸Æ¤ó¤Ç¤â̵°ÕÌ£¡£
123 if ($encoding_list === NULL)
127 $list = is_array($encoding_list) ? $encoding_list : explode(',',$encoding_list);
131 // mb_encode_mimeheader -- MIME¥Ø¥Ã¥À¤Îʸ»úÎó¤ò¥¨¥ó¥³¡¼¥É¤¹¤ë
132 function mb_encode_mimeheader($str,$charset='ISO-2022-JP',$transfer_encoding='B',$linefeed="\r\n")
134 // Ãí: $transfer_encoding¤Ë´Ø¤ï¤é¤ºbase64¥¨¥ó¥³¡¼¥É¤òÊÖ¤¹
135 $str = mb_convert_encoding($str,$charset,'auto');
136 return '=?'.$charset.'?B?'.$str;
139 // mb_http_output -- HTTP½ÐÎÏʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎÀßÄê/¼èÆÀ
140 function mb_http_output($encoding='')
143 return SOURCE_ENCODING;
146 // mb_internal_encoding -- ÆâÉôʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎÀßÄê/¼èÆÀ
147 function mb_internal_encoding($encoding='')
150 return SOURCE_ENCODING;
153 // mb_language -- ¥«¥ì¥ó¥È¤Î¸À¸ì¤òÀßÄê/¼èÆÀ
154 function mb_language($language=NULL)
156 static $mb_language = FALSE;
157 if ($language === NULL)
161 // Ãí: ¾ï¤ËTRUE¤òÊÖ¤¹
162 $mb_language = $language;
166 // mb_strimwidth -- »ØÄꤷ¤¿Éý¤Çʸ»úÎó¤ò´Ý¤á¤ë
167 function mb_strimwidth($str,$start,$width,$trimmarker='',$encoding='')
169 if ($start == 0 and $width <= strlen($str))
174 // Ãí: EUC-JPÀìÍÑ, $encoding¤ò»ÈÍѤ·¤Ê¤¤
175 $chars = unpack('C*', $str);
178 while (count($chars) and $start > 0)
181 if (array_shift($chars) >= 0x80)
186 if ($b_trimmarker = (count($chars) > $width))
188 $width -= strlen($trimmarker);
190 while (count($chars) and $width-- > 0)
192 $char = array_shift($chars);
199 $substr .= chr($char);
200 $char = array_shift($chars);
202 $substr .= chr($char);
206 $substr .= $trimmarker;
211 // mb_strlen -- ʸ»úÎó¤ÎŤµ¤òÆÀ¤ë
212 function mb_strlen($str,$encoding='')
214 // Ãí: EUC-JPÀìÍÑ, $encoding¤ò»ÈÍѤ·¤Ê¤¤
215 return jstrlen($str);
218 // mb_substr -- ʸ»úÎó¤Î°ìÉô¤òÆÀ¤ë
219 function mb_substr($str,$start,$length=NULL,$encoding='')
221 // Ãí: EUC-JPÀìÍÑ, $encoding¤ò»ÈÍѤ·¤Ê¤¤
222 return jsubstr($str,$start,($length === NULL) ? jstrlen($str) : $length);