Exemplo n.º 1
0
Arquivo: Iconv.php Projeto: pyjac/BSSB
 static function iconv($in_charset, $out_charset, $str)
 {
     if ('' === (string) $str) {
         return '';
     }
     // Prepare for //IGNORE and //TRANSLIT
     $TRANSLIT = $IGNORE = '';
     $out_charset = strtolower($out_charset);
     $in_charset = strtolower($in_charset);
     '' === $out_charset && ($out_charset = 'iso-8859-1');
     '' === $in_charset && ($in_charset = 'iso-8859-1');
     if ('//translit' === substr($out_charset, -10)) {
         $TRANSLIT = '//TRANSLIT';
         $out_charset = substr($out_charset, 0, -10);
     }
     if ('//ignore' === substr($out_charset, -8)) {
         $IGNORE = '//IGNORE';
         $out_charset = substr($out_charset, 0, -8);
     }
     '//translit' === substr($in_charset, -10) && ($in_charset = substr($in_charset, 0, -10));
     '//ignore' === substr($in_charset, -8) && ($in_charset = substr($in_charset, 0, -8));
     isset(self::$alias[$in_charset]) && ($in_charset = self::$alias[$in_charset]);
     isset(self::$alias[$out_charset]) && ($out_charset = self::$alias[$out_charset]);
     // Load charset maps
     if ('utf-8' !== $in_charset && !self::loadMap('from.', $in_charset, $in_map) || 'utf-8' !== $out_charset && !self::loadMap('to.', $out_charset, $out_map)) {
         user_error(sprintf(self::ERROR_WRONG_CHARSET, $in_charset, $out_charset));
         return false;
     }
     if ('utf-8' !== $in_charset) {
         // Convert input to UTF-8
         $result = '';
         if (self::map_to_utf8($result, $in_map, $str, $IGNORE)) {
             $str = $result;
         } else {
             $str = false;
         }
         self::$is_valid_utf8 = true;
     } else {
         self::$is_valid_utf8 = preg_match('//u', $str);
         if (!self::$is_valid_utf8 && !$IGNORE) {
             user_error(self::ERROR_ILLEGAL_CHARACTER);
             return false;
         }
         if ('utf-8' === $out_charset) {
             // UTF-8 validation
             $str = self::utf8_to_utf8($str, $IGNORE);
         }
     }
     if ('utf-8' !== $out_charset && false !== $str) {
         // Convert output to UTF-8
         $result = '';
         if (self::map_from_utf8($result, $out_map, $str, $IGNORE, $TRANSLIT)) {
             return $result;
         } else {
             return false;
         }
     } else {
         return $str;
     }
 }