2 /////////////////////////////////////////////////
3 // PukiWiki - Yet another WikiWikiWeb clone.
5 // $Id: mbstring.php,v 1.1 2004/08/01 01:54:35 henoheno Exp $
9 * mbstring extension ¤¬¥µ¡¼¥Ð¡¼Â¦¤Ë¸ºß¤·¤Ê¤¤»þ¤ÎÂåÂشؿô
13 * 1. ¼ÂºÝ¤Ë´Á»ú¥³¡¼¥ÉÊÑ´¹¤ò¹Ô¤ï¤»¤ë¤¿¤á¤Ë¤Ï¡¢ÊÌÅÓ jcode.php
14 * (TOMOºî)¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
16 * http://www.spencernetwork.org/jcode/ ¤è¤êjcode¤òÆþ¼ê¤·¡¢
17 * °Ê²¼¤ÎÍͤËŸ³«¤·¤Æ¤¯¤À¤µ¤¤¡£
19 * -+--- mbstring.php -r--
20 * +-+- jcode_1.34/ dr-x
21 * +--- readme.txt -r--
22 * +--- jcode.phps -r--
23 * +--- jcode_wrapper.php -r--
24 * +--- code_table.ucs2jis -r--
25 * +--- code_table.jis2ucs -r--
27 * 2. EUC-JPÀìÍѤǤ¹¡£(½ÐÎϤµ¤ì¤ë¥Ç¡¼¥¿¤¬EUC-JP¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¤Þ¤¹)
32 define('JCODE_DIR','./jcode_1.34');
34 if (is_readable(JCODE_DIR . '/jcode_wrapper.php'))
36 require_once(JCODE_DIR . '/jcode_wrapper.php');
39 // jcode¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¡¢¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤ä´Á»ú¥³¡¼¥É¤ò°·¤¨¤Ê¤¤
40 if (!function_exists('jcode_convert_encoding'))
42 // die_message('Multibyte functions cannot be used. Please read "mbstring.php" for an additional installation procedure of "jcode".');
43 function jstrlen($str)
47 function jsubstr($str,$start,$length)
49 return substr($str,$start,$length);
51 function AutoDetect($str)
55 function jcode_convert_encoding($str,$to_encoding,$from_encoding)
61 // mb_convert_encoding -- ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤òÊÑ´¹¤¹¤ë
62 function mb_convert_encoding($str,$to_encoding,$from_encoding='')
64 // ³ÈÄ¥: ÇÛÎó¤ò¼õ¤±¤é¤ì¤ë¤è¤¦¤Ë
65 // mb_convert_variableÂкö
68 foreach ($str as $key=>$value)
70 $str[$key] = mb_convert_encoding($value,$to_encoding,$from_encoding);
74 return jcode_convert_encoding($str,$to_encoding,$from_encoding);
77 // mb_convert_variables -- ÊÑ¿ô¤Îʸ»ú¥³¡¼¥É¤òÊÑ´¹¤¹¤ë
78 function mb_convert_variables($to_encoding,$from_encoding,&$vars)
80 // Ãí: ²ÄÊÑĹ°ú¿ô¤Ç¤Ï¤Ê¤¤¡£init.php¤«¤é¸Æ¤Ð¤ì¤ë1°ú¿ô¤Î¥Ñ¥¿¡¼¥ó¤Î¤ß¤ò¥µ¥Ý¡¼¥È
81 // ÀµÄ¾¤Ë¼ÂÁõ¤¹¤ë¤Ê¤é¡¢²ÄÊÑ°ú¿ô¤ò¥ê¥Õ¥¡¥ì¥ó¥¹¤Ç¼õ¤±¤ëÊýË¡¤¬É¬Í×
82 if (is_array($from_encoding) or $from_encoding == '' or $from_encoding == 'auto')
84 $from_encoding = mb_detect_encoding(join_array(' ',$vars));
86 if ($from_encoding != 'ASCII' and $from_encoding != SOURCE_ENCODING)
88 $vars = mb_convert_encoding($vars,$to_encoding,$from_encoding);
90 return $from_encoding;
93 // Êä½õ´Ø¿ô:ÇÛÎó¤òºÆµ¢Åª¤Ëjoin¤¹¤ë
94 function join_array($glue,$pieces)
97 foreach ($pieces as $piece)
99 $arr[] = is_array($piece) ? join_array($glue,$piece) : $piece;
101 return join($glue,$arr);
104 // mb_detect_encoding -- ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò¸¡½Ð¤¹¤ë
105 function mb_detect_encoding($str,$encoding_list='')
107 static $codes = array(0=>'ASCII',1=>'EUC-JP',2=>'SJIS',3=>'JIS',4=>'UTF-8');
109 // Ãí: $encoding_list¤Ï»ÈÍѤ·¤Ê¤¤¡£
110 $code = AutoDetect($str);
111 if (!array_key_exists($code,$codes))
115 return $codes[$code];
118 // mb_detect_order -- ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¸¡½Ð½ç½ø¤ÎÀßÄê/¼èÆÀ
119 function mb_detect_order($encoding_list=NULL)
121 static $list = array();
123 // Ãí: ¾¤Î´Ø¿ô¤Ë±Æ¶Á¤òµÚ¤Ü¤µ¤Ê¤¤¡£¸Æ¤ó¤Ç¤â̵°ÕÌ£¡£
124 if ($encoding_list === NULL)
128 $list = is_array($encoding_list) ? $encoding_list : explode(',',$encoding_list);
132 // mb_encode_mimeheader -- MIME¥Ø¥Ã¥À¤Îʸ»úÎó¤ò¥¨¥ó¥³¡¼¥É¤¹¤ë
133 function mb_encode_mimeheader($str,$charset='ISO-2022-JP',$transfer_encoding='B',$linefeed="\r\n")
135 // Ãí: $transfer_encoding¤Ë´Ø¤ï¤é¤ºbase64¥¨¥ó¥³¡¼¥É¤òÊÖ¤¹
136 $str = mb_convert_encoding($str,$charset,'auto');
137 return '=?'.$charset.'?B?'.$str;
140 // mb_http_output -- HTTP½ÐÎÏʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎÀßÄê/¼èÆÀ
141 function mb_http_output($encoding='')
144 return SOURCE_ENCODING;
147 // mb_internal_encoding -- ÆâÉôʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎÀßÄê/¼èÆÀ
148 function mb_internal_encoding($encoding='')
151 return SOURCE_ENCODING;
154 // mb_language -- ¥«¥ì¥ó¥È¤Î¸À¸ì¤òÀßÄê/¼èÆÀ
155 function mb_language($language=NULL)
157 static $mb_language = FALSE;
158 if ($language === NULL)
162 // Ãí: ¾ï¤ËTRUE¤òÊÖ¤¹
163 $mb_language = $language;
167 // mb_strimwidth -- »ØÄꤷ¤¿Éý¤Çʸ»úÎó¤ò´Ý¤á¤ë
168 function mb_strimwidth($str,$start,$width,$trimmarker='',$encoding='')
170 if ($start == 0 and $width <= strlen($str))
175 // Ãí: EUC-JPÀìÍÑ, $encoding¤ò»ÈÍѤ·¤Ê¤¤
176 $chars = unpack('C*', $str);
179 while (count($chars) and $start > 0)
182 if (array_shift($chars) >= 0x80)
187 if ($b_trimmarker = (count($chars) > $width))
189 $width -= strlen($trimmarker);
191 while (count($chars) and $width-- > 0)
193 $char = array_shift($chars);
200 $substr .= chr($char);
201 $char = array_shift($chars);
203 $substr .= chr($char);
207 $substr .= $trimmarker;
212 // mb_strlen -- ʸ»úÎó¤ÎŤµ¤òÆÀ¤ë
213 function mb_strlen($str,$encoding='')
215 // Ãí: EUC-JPÀìÍÑ, $encoding¤ò»ÈÍѤ·¤Ê¤¤
216 return jstrlen($str);
219 // mb_substr -- ʸ»úÎó¤Î°ìÉô¤òÆÀ¤ë
220 function mb_substr($str,$start,$length=NULL,$encoding='')
222 // Ãí: EUC-JPÀìÍÑ, $encoding¤ò»ÈÍѤ·¤Ê¤¤
223 return jsubstr($str,$start,($length === NULL) ? jstrlen($str) : $length);