shop.balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

utf8.php (14840B)


      1 <?php
      2 if (extension_loaded('mbstring')) {
      3 	mb_internal_encoding('UTF-8');
      4 
      5 	function utf8_strlen($string) {
      6 		return mb_strlen($string);
      7 	}
      8 
      9 	function utf8_strpos($string, $needle, $offset = 0) {
     10 		return mb_strpos($string, $needle, $offset);
     11 	}
     12 
     13 	function utf8_strrpos($string, $needle, $offset = 0) {
     14 		return mb_strrpos($string, $needle, $offset);
     15 	}
     16 
     17 	function utf8_substr($string, $offset, $length = null) {
     18 		if ($length === null) {
     19 			return mb_substr($string, $offset, utf8_strlen($string));
     20 		} else {
     21 			return mb_substr($string, $offset, $length);
     22 		}
     23 	}
     24 
     25 	function utf8_strtoupper($string) {
     26 		return mb_strtoupper($string);
     27 	}
     28 
     29 	function utf8_strtolower($string) {
     30 		return mb_strtolower($string);
     31 	}
     32 } elseif (function_exists('iconv')) {
     33 	function utf8_strlen($string) {
     34 		return iconv_strlen($string, 'UTF-8');
     35 	}
     36 
     37 	function utf8_strpos($string, $needle, $offset = 0) {
     38 		return iconv_strpos($string, $needle, $offset, 'UTF-8');
     39 	}
     40 
     41 	function utf8_strrpos($string, $needle) {
     42 		return iconv_strrpos($string, $needle, 'UTF-8');
     43 	}
     44 
     45 	function utf8_substr($string, $offset, $length = null) {
     46 		if ($length === null) {
     47 			return iconv_substr($string, $offset, utf8_strlen($string), 'UTF-8');
     48 		} else {
     49 			return iconv_substr($string, $offset, $length, 'UTF-8');
     50 		}
     51 	}
     52 
     53 	function utf8_strtolower($string) {
     54 		static $upper_to_lower;
     55 
     56 		if ($upper_to_lower == null) {
     57 			$upper_to_lower = array(
     58 				0x0041 => 0x0061,
     59 				0x03A6 => 0x03C6,
     60 				0x0162 => 0x0163,
     61 				0x00C5 => 0x00E5,
     62 				0x0042 => 0x0062,
     63 				0x0139 => 0x013A,
     64 				0x00C1 => 0x00E1,
     65 				0x0141 => 0x0142,
     66 				0x038E => 0x03CD,
     67 				0x0100 => 0x0101,
     68 				0x0490 => 0x0491,
     69 				0x0394 => 0x03B4,
     70 				0x015A => 0x015B,
     71 				0x0044 => 0x0064,
     72 				0x0393 => 0x03B3,
     73 				0x00D4 => 0x00F4,
     74 				0x042A => 0x044A,
     75 				0x0419 => 0x0439,
     76 				0x0112 => 0x0113,
     77 				0x041C => 0x043C,
     78 				0x015E => 0x015F,
     79 				0x0143 => 0x0144,
     80 				0x00CE => 0x00EE,
     81 				0x040E => 0x045E,
     82 				0x042F => 0x044F,
     83 				0x039A => 0x03BA,
     84 				0x0154 => 0x0155,
     85 				0x0049 => 0x0069,
     86 				0x0053 => 0x0073,
     87 				0x1E1E => 0x1E1F,
     88 				0x0134 => 0x0135,
     89 				0x0427 => 0x0447,
     90 				0x03A0 => 0x03C0,
     91 				0x0418 => 0x0438,
     92 				0x00D3 => 0x00F3,
     93 				0x0420 => 0x0440,
     94 				0x0404 => 0x0454,
     95 				0x0415 => 0x0435,
     96 				0x0429 => 0x0449,
     97 				0x014A => 0x014B,
     98 				0x0411 => 0x0431,
     99 				0x0409 => 0x0459,
    100 				0x1E02 => 0x1E03,
    101 				0x00D6 => 0x00F6,
    102 				0x00D9 => 0x00F9,
    103 				0x004E => 0x006E,
    104 				0x0401 => 0x0451,
    105 				0x03A4 => 0x03C4,
    106 				0x0423 => 0x0443,
    107 				0x015C => 0x015D,
    108 				0x0403 => 0x0453,
    109 				0x03A8 => 0x03C8,
    110 				0x0158 => 0x0159,
    111 				0x0047 => 0x0067,
    112 				0x00C4 => 0x00E4,
    113 				0x0386 => 0x03AC,
    114 				0x0389 => 0x03AE,
    115 				0x0166 => 0x0167,
    116 				0x039E => 0x03BE,
    117 				0x0164 => 0x0165,
    118 				0x0116 => 0x0117,
    119 				0x0108 => 0x0109,
    120 				0x0056 => 0x0076,
    121 				0x00DE => 0x00FE,
    122 				0x0156 => 0x0157,
    123 				0x00DA => 0x00FA,
    124 				0x1E60 => 0x1E61,
    125 				0x1E82 => 0x1E83,
    126 				0x00C2 => 0x00E2,
    127 				0x0118 => 0x0119,
    128 				0x0145 => 0x0146,
    129 				0x0050 => 0x0070,
    130 				0x0150 => 0x0151,
    131 				0x042E => 0x044E,
    132 				0x0128 => 0x0129,
    133 				0x03A7 => 0x03C7,
    134 				0x013D => 0x013E,
    135 				0x0422 => 0x0442,
    136 				0x005A => 0x007A,
    137 				0x0428 => 0x0448,
    138 				0x03A1 => 0x03C1,
    139 				0x1E80 => 0x1E81,
    140 				0x016C => 0x016D,
    141 				0x00D5 => 0x00F5,
    142 				0x0055 => 0x0075,
    143 				0x0176 => 0x0177,
    144 				0x00DC => 0x00FC,
    145 				0x1E56 => 0x1E57,
    146 				0x03A3 => 0x03C3,
    147 				0x041A => 0x043A,
    148 				0x004D => 0x006D,
    149 				0x016A => 0x016B,
    150 				0x0170 => 0x0171,
    151 				0x0424 => 0x0444,
    152 				0x00CC => 0x00EC,
    153 				0x0168 => 0x0169,
    154 				0x039F => 0x03BF,
    155 				0x004B => 0x006B,
    156 				0x00D2 => 0x00F2,
    157 				0x00C0 => 0x00E0,
    158 				0x0414 => 0x0434,
    159 				0x03A9 => 0x03C9,
    160 				0x1E6A => 0x1E6B,
    161 				0x00C3 => 0x00E3,
    162 				0x042D => 0x044D,
    163 				0x0416 => 0x0436,
    164 				0x01A0 => 0x01A1,
    165 				0x010C => 0x010D,
    166 				0x011C => 0x011D,
    167 				0x00D0 => 0x00F0,
    168 				0x013B => 0x013C,
    169 				0x040F => 0x045F,
    170 				0x040A => 0x045A,
    171 				0x00C8 => 0x00E8,
    172 				0x03A5 => 0x03C5,
    173 				0x0046 => 0x0066,
    174 				0x00DD => 0x00FD,
    175 				0x0043 => 0x0063,
    176 				0x021A => 0x021B,
    177 				0x00CA => 0x00EA,
    178 				0x0399 => 0x03B9,
    179 				0x0179 => 0x017A,
    180 				0x00CF => 0x00EF,
    181 				0x01AF => 0x01B0,
    182 				0x0045 => 0x0065,
    183 				0x039B => 0x03BB,
    184 				0x0398 => 0x03B8,
    185 				0x039C => 0x03BC,
    186 				0x040C => 0x045C,
    187 				0x041F => 0x043F,
    188 				0x042C => 0x044C,
    189 				0x00DE => 0x00FE,
    190 				0x00D0 => 0x00F0,
    191 				0x1EF2 => 0x1EF3,
    192 				0x0048 => 0x0068,
    193 				0x00CB => 0x00EB,
    194 				0x0110 => 0x0111,
    195 				0x0413 => 0x0433,
    196 				0x012E => 0x012F,
    197 				0x00C6 => 0x00E6,
    198 				0x0058 => 0x0078,
    199 				0x0160 => 0x0161,
    200 				0x016E => 0x016F,
    201 				0x0391 => 0x03B1,
    202 				0x0407 => 0x0457,
    203 				0x0172 => 0x0173,
    204 				0x0178 => 0x00FF,
    205 				0x004F => 0x006F,
    206 				0x041B => 0x043B,
    207 				0x0395 => 0x03B5,
    208 				0x0425 => 0x0445,
    209 				0x0120 => 0x0121,
    210 				0x017D => 0x017E,
    211 				0x017B => 0x017C,
    212 				0x0396 => 0x03B6,
    213 				0x0392 => 0x03B2,
    214 				0x0388 => 0x03AD,
    215 				0x1E84 => 0x1E85,
    216 				0x0174 => 0x0175,
    217 				0x0051 => 0x0071,
    218 				0x0417 => 0x0437,
    219 				0x1E0A => 0x1E0B,
    220 				0x0147 => 0x0148,
    221 				0x0104 => 0x0105,
    222 				0x0408 => 0x0458,
    223 				0x014C => 0x014D,
    224 				0x00CD => 0x00ED,
    225 				0x0059 => 0x0079,
    226 				0x010A => 0x010B,
    227 				0x038F => 0x03CE,
    228 				0x0052 => 0x0072,
    229 				0x0410 => 0x0430,
    230 				0x0405 => 0x0455,
    231 				0x0402 => 0x0452,
    232 				0x0126 => 0x0127,
    233 				0x0136 => 0x0137,
    234 				0x012A => 0x012B,
    235 				0x038A => 0x03AF,
    236 				0x042B => 0x044B,
    237 				0x004C => 0x006C,
    238 				0x0397 => 0x03B7,
    239 				0x0124 => 0x0125,
    240 				0x0218 => 0x0219,
    241 				0x00DB => 0x00FB,
    242 				0x011E => 0x011F,
    243 				0x041E => 0x043E,
    244 				0x1E40 => 0x1E41,
    245 				0x039D => 0x03BD,
    246 				0x0106 => 0x0107,
    247 				0x03AB => 0x03CB,
    248 				0x0426 => 0x0446,
    249 				0x00DE => 0x00FE,
    250 				0x00C7 => 0x00E7,
    251 				0x03AA => 0x03CA,
    252 				0x0421 => 0x0441,
    253 				0x0412 => 0x0432,
    254 				0x010E => 0x010F,
    255 				0x00D8 => 0x00F8,
    256 				0x0057 => 0x0077,
    257 				0x011A => 0x011B,
    258 				0x0054 => 0x0074,
    259 				0x004A => 0x006A,
    260 				0x040B => 0x045B,
    261 				0x0406 => 0x0456,
    262 				0x0102 => 0x0103,
    263 				0x039B => 0x03BB,
    264 				0x00D1 => 0x00F1,
    265 				0x041D => 0x043D,
    266 				0x038C => 0x03CC,
    267 				0x00C9 => 0x00E9,
    268 				0x00D0 => 0x00F0,
    269 				0x0407 => 0x0457,
    270 				0x0122 => 0x0123
    271 			);
    272 		}
    273 
    274 		$unicode = utf8_to_unicode($string);
    275 
    276 		if (!$unicode) {
    277 			return false;
    278 		}
    279 
    280 		for ($i = 0; $i < count($unicode); $i++) {
    281 			if (isset($upper_to_lower[$unicode[$i]])) {
    282 				$unicode[$i] = $upper_to_lower[$unicode[$i]];
    283 			}
    284 		}
    285 
    286 		return unicode_to_utf8($unicode);
    287 	}
    288 
    289 	function utf8_strtoupper($string) {
    290 		static $lower_to_upper;
    291 
    292 		if ($lower_to_upper == null) {
    293 			$lower_to_upper = array(
    294 				0x0061 => 0x0041,
    295 				0x03C6 => 0x03A6,
    296 				0x0163 => 0x0162,
    297 				0x00E5 => 0x00C5,
    298 				0x0062 => 0x0042,
    299 				0x013A => 0x0139,
    300 				0x00E1 => 0x00C1,
    301 				0x0142 => 0x0141,
    302 				0x03CD => 0x038E,
    303 				0x0101 => 0x0100,
    304 				0x0491 => 0x0490,
    305 				0x03B4 => 0x0394,
    306 				0x015B => 0x015A,
    307 				0x0064 => 0x0044,
    308 				0x03B3 => 0x0393,
    309 				0x00F4 => 0x00D4,
    310 				0x044A => 0x042A,
    311 				0x0439 => 0x0419,
    312 				0x0113 => 0x0112,
    313 				0x043C => 0x041C,
    314 				0x015F => 0x015E,
    315 				0x0144 => 0x0143,
    316 				0x00EE => 0x00CE,
    317 				0x045E => 0x040E,
    318 				0x044F => 0x042F,
    319 				0x03BA => 0x039A,
    320 				0x0155 => 0x0154,
    321 				0x0069 => 0x0049,
    322 				0x0073 => 0x0053,
    323 				0x1E1F => 0x1E1E,
    324 				0x0135 => 0x0134,
    325 				0x0447 => 0x0427,
    326 				0x03C0 => 0x03A0,
    327 				0x0438 => 0x0418,
    328 				0x00F3 => 0x00D3,
    329 				0x0440 => 0x0420,
    330 				0x0454 => 0x0404,
    331 				0x0435 => 0x0415,
    332 				0x0449 => 0x0429,
    333 				0x014B => 0x014A,
    334 				0x0431 => 0x0411,
    335 				0x0459 => 0x0409,
    336 				0x1E03 => 0x1E02,
    337 				0x00F6 => 0x00D6,
    338 				0x00F9 => 0x00D9,
    339 				0x006E => 0x004E,
    340 				0x0451 => 0x0401,
    341 				0x03C4 => 0x03A4,
    342 				0x0443 => 0x0423,
    343 				0x015D => 0x015C,
    344 				0x0453 => 0x0403,
    345 				0x03C8 => 0x03A8,
    346 				0x0159 => 0x0158,
    347 				0x0067 => 0x0047,
    348 				0x00E4 => 0x00C4,
    349 				0x03AC => 0x0386,
    350 				0x03AE => 0x0389,
    351 				0x0167 => 0x0166,
    352 				0x03BE => 0x039E,
    353 				0x0165 => 0x0164,
    354 				0x0117 => 0x0116,
    355 				0x0109 => 0x0108,
    356 				0x0076 => 0x0056,
    357 				0x00FE => 0x00DE,
    358 				0x0157 => 0x0156,
    359 				0x00FA => 0x00DA,
    360 				0x1E61 => 0x1E60,
    361 				0x1E83 => 0x1E82,
    362 				0x00E2 => 0x00C2,
    363 				0x0119 => 0x0118,
    364 				0x0146 => 0x0145,
    365 				0x0070 => 0x0050,
    366 				0x0151 => 0x0150,
    367 				0x044E => 0x042E,
    368 				0x0129 => 0x0128,
    369 				0x03C7 => 0x03A7,
    370 				0x013E => 0x013D,
    371 				0x0442 => 0x0422,
    372 				0x007A => 0x005A,
    373 				0x0448 => 0x0428,
    374 				0x03C1 => 0x03A1,
    375 				0x1E81 => 0x1E80,
    376 				0x016D => 0x016C,
    377 				0x00F5 => 0x00D5,
    378 				0x0075 => 0x0055,
    379 				0x0177 => 0x0176,
    380 				0x00FC => 0x00DC,
    381 				0x1E57 => 0x1E56,
    382 				0x03C3 => 0x03A3,
    383 				0x043A => 0x041A,
    384 				0x006D => 0x004D,
    385 				0x016B => 0x016A,
    386 				0x0171 => 0x0170,
    387 				0x0444 => 0x0424,
    388 				0x00EC => 0x00CC,
    389 				0x0169 => 0x0168,
    390 				0x03BF => 0x039F,
    391 				0x006B => 0x004B,
    392 				0x00F2 => 0x00D2,
    393 				0x00E0 => 0x00C0,
    394 				0x0434 => 0x0414,
    395 				0x03C9 => 0x03A9,
    396 				0x1E6B => 0x1E6A,
    397 				0x00E3 => 0x00C3,
    398 				0x044D => 0x042D,
    399 				0x0436 => 0x0416,
    400 				0x01A1 => 0x01A0,
    401 				0x010D => 0x010C,
    402 				0x011D => 0x011C,
    403 				0x00F0 => 0x00D0,
    404 				0x013C => 0x013B,
    405 				0x045F => 0x040F,
    406 				0x045A => 0x040A,
    407 				0x00E8 => 0x00C8,
    408 				0x03C5 => 0x03A5,
    409 				0x0066 => 0x0046,
    410 				0x00FD => 0x00DD,
    411 				0x0063 => 0x0043,
    412 				0x021B => 0x021A,
    413 				0x00EA => 0x00CA,
    414 				0x03B9 => 0x0399,
    415 				0x017A => 0x0179,
    416 				0x00EF => 0x00CF,
    417 				0x01B0 => 0x01AF,
    418 				0x0065 => 0x0045,
    419 				0x03BB => 0x039B,
    420 				0x03B8 => 0x0398,
    421 				0x03BC => 0x039C,
    422 				0x045C => 0x040C,
    423 				0x043F => 0x041F,
    424 				0x044C => 0x042C,
    425 				0x00FE => 0x00DE,
    426 				0x00F0 => 0x00D0,
    427 				0x1EF3 => 0x1EF2,
    428 				0x0068 => 0x0048,
    429 				0x00EB => 0x00CB,
    430 				0x0111 => 0x0110,
    431 				0x0433 => 0x0413,
    432 				0x012F => 0x012E,
    433 				0x00E6 => 0x00C6,
    434 				0x0078 => 0x0058,
    435 				0x0161 => 0x0160,
    436 				0x016F => 0x016E,
    437 				0x03B1 => 0x0391,
    438 				0x0457 => 0x0407,
    439 				0x0173 => 0x0172,
    440 				0x00FF => 0x0178,
    441 				0x006F => 0x004F,
    442 				0x043B => 0x041B,
    443 				0x03B5 => 0x0395,
    444 				0x0445 => 0x0425,
    445 				0x0121 => 0x0120,
    446 				0x017E => 0x017D,
    447 				0x017C => 0x017B,
    448 				0x03B6 => 0x0396,
    449 				0x03B2 => 0x0392,
    450 				0x03AD => 0x0388,
    451 				0x1E85 => 0x1E84,
    452 				0x0175 => 0x0174,
    453 				0x0071 => 0x0051,
    454 				0x0437 => 0x0417,
    455 				0x1E0B => 0x1E0A,
    456 				0x0148 => 0x0147,
    457 				0x0105 => 0x0104,
    458 				0x0458 => 0x0408,
    459 				0x014D => 0x014C,
    460 				0x00ED => 0x00CD,
    461 				0x0079 => 0x0059,
    462 				0x010B => 0x010A,
    463 				0x03CE => 0x038F,
    464 				0x0072 => 0x0052,
    465 				0x0430 => 0x0410,
    466 				0x0455 => 0x0405,
    467 				0x0452 => 0x0402,
    468 				0x0127 => 0x0126,
    469 				0x0137 => 0x0136,
    470 				0x012B => 0x012A,
    471 				0x03AF => 0x038A,
    472 				0x044B => 0x042B,
    473 				0x006C => 0x004C,
    474 				0x03B7 => 0x0397,
    475 				0x0125 => 0x0124,
    476 				0x0219 => 0x0218,
    477 				0x00FB => 0x00DB,
    478 				0x011F => 0x011E,
    479 				0x043E => 0x041E,
    480 				0x1E41 => 0x1E40,
    481 				0x03BD => 0x039D,
    482 				0x0107 => 0x0106,
    483 				0x03CB => 0x03AB,
    484 				0x0446 => 0x0426,
    485 				0x00FE => 0x00DE,
    486 				0x00E7 => 0x00C7,
    487 				0x03CA => 0x03AA,
    488 				0x0441 => 0x0421,
    489 				0x0432 => 0x0412,
    490 				0x010F => 0x010E,
    491 				0x00F8 => 0x00D8,
    492 				0x0077 => 0x0057,
    493 				0x011B => 0x011A,
    494 				0x0074 => 0x0054,
    495 				0x006A => 0x004A,
    496 				0x045B => 0x040B,
    497 				0x0456 => 0x0406,
    498 				0x0103 => 0x0102,
    499 				0x03BB => 0x039B,
    500 				0x00F1 => 0x00D1,
    501 				0x043D => 0x041D,
    502 				0x03CC => 0x038C,
    503 				0x00E9 => 0x00C9,
    504 				0x00F0 => 0x00D0,
    505 				0x0457 => 0x0407,
    506 				0x0123 => 0x0122
    507 			);
    508 		}
    509 
    510 		$unicode = utf8_to_unicode($string);
    511 
    512 		if (!$unicode) {
    513 			return false;
    514 		}
    515 
    516 		for ($i = 0; $i < count($unicode); $i++) {
    517 			if (isset($lower_to_upper[$unicode[$i]])) {
    518 				$unicode[$i] = $lower_to_upper[$unicode[$i]];
    519 			}
    520 		}
    521 
    522 		return unicode_to_utf8($unicode);
    523 	}
    524 
    525 	function utf8_to_unicode($string) {
    526 		$unicode = array();
    527 
    528 		for ($i = 0; $i < strlen($string); $i++) {
    529 			$chr = ord($string[$i]);
    530 
    531 			if ($chr >= 0 && $chr <= 127) {
    532 				$unicode[] = (ord($string[$i]) * pow(64, 0));
    533 			}
    534 
    535 			if ($chr >= 192 && $chr <= 223) {
    536 				$unicode[] = ((ord($string[$i]) - 192) * pow(64, 1) + (ord($string[$i + 1]) - 128) * pow(64, 0));
    537 			}
    538 
    539 			if ($chr >= 224 && $chr <= 239) {
    540 				$unicode[] = ((ord($string[$i]) - 224) * pow(64, 2) + (ord($string[$i + 1]) - 128) * pow(64, 1) + (ord($string[$i + 2]) - 128) * pow(64, 0));
    541 			}
    542 
    543 			if ($chr >= 240 && $chr <= 247) {
    544 				$unicode[] = ((ord($string[$i]) - 240) * pow(64, 3) + (ord($string[$i + 1]) - 128) * pow(64, 2) + (ord($string[$i + 2]) - 128) * pow(64, 1) + (ord($string[$i + 3]) - 128) * pow(64, 0));
    545 			}
    546 
    547 			if ($chr >= 248 && $chr <= 251) {
    548 				$unicode[] = ((ord($string[$i]) - 248) * pow(64, 4) + (ord($string[$i + 1]) - 128) * pow(64, 3) + (ord($string[$i + 2]) - 128) * pow(64, 2) + (ord($string[$i + 3]) - 128) * pow(64, 1) + (ord($string[$i + 4]) - 128) * pow(64, 0));
    549 			}
    550 
    551 			if ($chr == 252 || $chr == 253) {
    552 				$unicode[] = ((ord($string[$i]) - 252) * pow(64, 5) + (ord($string[$i + 1]) - 128) * pow(64, 4) + (ord($string[$i + 2]) - 128) * pow(64, 3) + (ord($string[$i + 3]) - 128) * pow(64, 2) + (ord($string[$i + 4]) - 128) * pow(64, 1) + (ord($string[$i + 5]) - 128) * pow(64, 0));
    553 			}
    554 		}
    555 
    556 		return $unicode;
    557 	}
    558 
    559 	function unicode_to_utf8($unicode) {
    560 		$string = '';
    561 
    562 		for ($i = 0; $i < count($unicode); $i++) {
    563 			if ($unicode[$i] < 128) {
    564 				$string .= chr($unicode[$i]);
    565 			}
    566 
    567 			if ($unicode[$i] >= 128 && $unicode[$i] <= 2047) {
    568 				$string .= chr(($unicode[$i] / 64) + 192) . chr(($unicode[$i] % 64) + 128);
    569 			}
    570 
    571 			if ($unicode[$i] >= 2048 && $unicode[$i] <= 65535) {
    572 				$string .= chr(($unicode[$i] / 4096) + 224) . chr(128 + (($unicode[$i] / 64) % 64)) . chr(($unicode[$i] % 64) + 128);
    573 			}
    574 
    575 			if ($unicode[$i] >= 65536 && $unicode[$i] <= 2097151) {
    576 				$string .= chr(($unicode[$i] / 262144) + 240) . chr((($unicode[$i] / 4096) % 64) + 128) . chr((($unicode[$i] / 64) % 64) + 128) . chr(($unicode[$i] % 64) + 128);
    577 			}
    578 
    579 			if ($unicode[$i] >= 2097152 && $unicode[$i] <= 67108863) {
    580 				$string  .= chr(($unicode[$i] / 16777216) + 248) . chr((($unicode[$i] / 262144) % 64) + 128) . chr((($unicode[$i] / 4096) % 64) + 128) . chr((($unicode[$i] / 64) % 64) + 128) . chr(($unicode[$i] % 64) + 128);
    581 			}
    582 
    583 			if ($unicode[$i] >= 67108864 && $unicode[$i] <= 2147483647) {
    584 				$string .= chr(($unicode[$i] / 1073741824) + 252) . chr((($unicode[$i] / 16777216) % 64) + 128) . chr((($unicode[$i] / 262144) % 64) + 128) . chr(128 + (($unicode[$i] / 4096) % 64)) . chr((($unicode[$i] / 64) % 64) + 128) . chr(($unicode[$i] % 64) + 128);
    585 			}
    586 		}
    587 
    588 		return $string;
    589 	}
    590 }