2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
5 // $Id: mbstring.php,v 1.9 2003/11/17 00:15:13 arino Exp $
9 * PHP¤Îmbstring extension¤¬»ÈÍѤǤ¤Ê¤¤¤È¤¤ÎÂåÂشؿô
17 * jcode_1.34.zip (http://www.spencernetwork.org/)¤òÆþ¼ê¤·¤Æ¡¢
18 * mbstring.php¤ÈƱ¤¸¤È¤³¤í¤Ë¥Ç¥£¥ì¥¯¥È¥êÉÕ¤¤ÇŸ³«¤·¤Æ¤¯¤À¤µ¤¤¡£
20 * -+--- mbstring.php -r--
21 * +-+- jcode_1.34/ dr-x
22 * +--- readme.txt -r--
23 * +--- jcode.phps -r--
24 * +--- jcode_wrapper.php -r--
25 * +--- code_table.ucs2jis -r--
26 * +--- code_table.jis2ucs -r--
30 if (is_readable('jcode_1.34/jcode_wrapper.php'))
32 require_once('jcode_1.34/jcode_wrapper.php');
34 if (!function_exists('jcode_convert_encoding'))
36 // die_message('Multibyte functions cannot be used. Please read "mbstring.php" for an additional installation procedure.');
37 function jstrlen($str)
41 function jsubstr($str,$start,$length)
43 return substr($str,$start,$length);
45 function AutoDetect($str)
49 function jcode_convert_encoding($str,$to_encoding,$from_encoding)
55 // mb_convert_encoding -- ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤òÊÑ´¹¤¹¤ë
56 function mb_convert_encoding($str,$to_encoding,$from_encoding='')
58 // ³ÈÄ¥: ÇÛÎó¤ò¼õ¤±¤é¤ì¤ë¤è¤¦¤Ë
59 // mb_convert_variableÂкö
62 foreach ($str as $key=>$value)
64 $str[$key] = mb_convert_encoding($value,$to_encoding,$from_encoding);
68 return jcode_convert_encoding($str,$to_encoding,$from_encoding);
71 // mb_convert_variables -- ÊÑ¿ô¤Îʸ»ú¥³¡¼¥É¤òÊÑ´¹¤¹¤ë
72 function mb_convert_variables($to_encoding,$from_encoding,&$vars)
74 // Ãí: ²ÄÊÑĹ°ú¿ô¤Ç¤Ï¤Ê¤¤¡£init.php¤«¤é¸Æ¤Ð¤ì¤ë1°ú¿ô¤Î¥Ñ¥¿¡¼¥ó¤Î¤ß¤ò¥µ¥Ý¡¼¥È
75 // ÀµÄ¾¤Ë¼ÂÁõ¤¹¤ë¤Ê¤é¡¢²ÄÊÑ°ú¿ô¤ò¥ê¥Õ¥¡¥ì¥ó¥¹¤Ç¼õ¤±¤ëÊýË¡¤¬É¬Í×
76 if (is_array($from_encoding) or $from_encoding == '' or $from_encoding == 'auto')
78 $from_encoding = mb_detect_encoding(join_array(' ',$vars));
80 if ($from_encoding != 'ASCII' and $from_encoding != SOURCE_ENCODING)
82 $vars = mb_convert_encoding($vars,$to_encoding,$from_encoding);
84 return $from_encoding;
87 // Êä½õ´Ø¿ô:ÇÛÎó¤òºÆµ¢Åª¤Ëjoin¤¹¤ë
88 function join_array($glue,$pieces)
91 foreach ($pieces as $piece)
93 $arr[] = is_array($piece) ? join_array($glue,$piece) : $piece;
95 return join($glue,$arr);
98 // mb_detect_encoding -- ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò¸¡½Ð¤¹¤ë
99 function mb_detect_encoding($str,$encoding_list='')
101 static $codes = array(0=>'ASCII',1=>'EUC-JP',2=>'SJIS',3=>'JIS',4=>'UTF-8');
103 // Ãí: $encoding_list¤Ï»ÈÍѤ·¤Ê¤¤¡£
104 $code = AutoDetect($str);
105 if (!array_key_exists($code,$codes))
109 return $codes[$code];
112 // mb_detect_order -- ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¸¡½Ð½ç½ø¤ÎÀßÄê/¼èÆÀ
113 function mb_detect_order($encoding_list=NULL)
115 static $list = array();
117 // Ãí: ¾¤Î´Ø¿ô¤Ë±Æ¶Á¤òµÚ¤Ü¤µ¤Ê¤¤¡£¸Æ¤ó¤Ç¤â̵°ÕÌ£¡£
118 if ($encoding_list === NULL)
122 $list = is_array($encoding_list) ? $encoding_list : explode(',',$encoding_list);
126 // mb_encode_mimeheader -- MIME¥Ø¥Ã¥À¤Îʸ»úÎó¤ò¥¨¥ó¥³¡¼¥É¤¹¤ë
127 function mb_encode_mimeheader($str,$charset='ISO-2022-JP',$transfer_encoding='B',$linefeed="\r\n")
129 // Ãí: $transfer_encoding¤Ë´Ø¤ï¤é¤ºbase64¥¨¥ó¥³¡¼¥É¤òÊÖ¤¹
130 $str = mb_convert_encoding($str,$charset,'auto');
131 return '=?'.$charset.'?B?'.$str;
134 // mb_http_output -- HTTP½ÐÎÏʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎÀßÄê/¼èÆÀ
135 function mb_http_output($encoding='')
138 return SOURCE_ENCODING;
141 // mb_internal_encoding -- ÆâÉôʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎÀßÄê/¼èÆÀ
142 function mb_internal_encoding($encoding='')
145 return SOURCE_ENCODING;
148 // mb_language -- ¥«¥ì¥ó¥È¤Î¸À¸ì¤òÀßÄê/¼èÆÀ
149 function mb_language($language=NULL)
151 static $mb_language = FALSE;
152 if ($language === NULL)
156 // Ãí: ¾ï¤ËTRUE¤òÊÖ¤¹
157 $mb_language = $language;
161 // mb_strimwidth -- »ØÄꤷ¤¿Éý¤Çʸ»úÎó¤ò´Ý¤á¤ë
162 function mb_strimwidth($str,$start,$width,$trimmarker='',$encoding='')
164 if ($start == 0 and $width <= strlen($str))
169 // Ãí: EUC-JPÀìÍÑ, $encoding¤ò»ÈÍѤ·¤Ê¤¤
170 $chars = unpack('C*', $str);
173 while (count($chars) and $start > 0)
176 if (array_shift($chars) >= 0x80)
181 if ($b_trimmarker = (count($chars) > $width))
183 $width -= strlen($trimmarker);
185 while (count($chars) and $width-- > 0)
187 $char = array_shift($chars);
194 $substr .= chr($char);
195 $char = array_shift($chars);
197 $substr .= chr($char);
201 $substr .= $trimmarker;
206 // mb_strlen -- ʸ»úÎó¤ÎŤµ¤òÆÀ¤ë
207 function mb_strlen($str,$encoding='')
209 // Ãí: EUC-JPÀìÍÑ, $encoding¤ò»ÈÍѤ·¤Ê¤¤
210 return jstrlen($str);
213 // mb_substr -- ʸ»úÎó¤Î°ìÉô¤òÆÀ¤ë
214 function mb_substr($str,$start,$length=NULL,$encoding='')
216 // Ãí: EUC-JPÀìÍÑ, $encoding¤ò»ÈÍѤ·¤Ê¤¤
217 return jsubstr($str,$start,($length === NULL) ? jstrlen($str) : $length);