Пример #1
0
 public static function iconv($inCharset, $outCharset, $str)
 {
     if ('' === ($str .= '')) {
         return '';
     }
     // Prepare for //IGNORE and //TRANSLIT
     $translit = $ignore = '';
     $outCharset = strtolower($outCharset);
     $inCharset = strtolower($inCharset);
     if ('' === $outCharset) {
         $outCharset = 'iso-8859-1';
     }
     if ('' === $inCharset) {
         $inCharset = 'iso-8859-1';
     }
     if ('//translit' === substr($outCharset, -10)) {
         $translit = '//TRANSLIT';
         $outCharset = substr($outCharset, 0, -10);
     }
     if ('//ignore' === substr($outCharset, -8)) {
         $ignore = '//IGNORE';
         $outCharset = substr($outCharset, 0, -8);
     }
     if ('//translit' === substr($inCharset, -10)) {
         $inCharset = substr($inCharset, 0, -10);
     }
     if ('//ignore' === substr($inCharset, -8)) {
         $inCharset = substr($inCharset, 0, -8);
     }
     if (isset(self::$alias[$inCharset])) {
         $inCharset = self::$alias[$inCharset];
     }
     if (isset(self::$alias[$outCharset])) {
         $outCharset = self::$alias[$outCharset];
     }
     // Load charset maps
     if ('utf-8' !== $inCharset && !self::loadMap('from.', $inCharset, $inMap) || 'utf-8' !== $outCharset && !self::loadMap('to.', $outCharset, $outMap)) {
         trigger_error(sprintf(self::ERROR_WRONG_CHARSET, $inCharset, $outCharset));
         return false;
     }
     if ('utf-8' !== $inCharset) {
         // Convert input to UTF-8
         $result = '';
         if (self::mapToUtf8($result, $inMap, $str, $ignore)) {
             $str = $result;
         } else {
             $str = false;
         }
         self::$isValidUtf8 = true;
     } else {
         self::$isValidUtf8 = preg_match('//u', $str);
         if (!self::$isValidUtf8 && !$ignore) {
             trigger_error(self::ERROR_ILLEGAL_CHARACTER);
             return false;
         }
         if ('utf-8' === $outCharset) {
             // UTF-8 validation
             $str = self::utf8ToUtf8($str, $ignore);
         }
     }
     if ('utf-8' !== $outCharset && false !== $str) {
         // Convert output to UTF-8
         $result = '';
         if (self::mapFromUtf8($result, $outMap, $str, $ignore, $translit)) {
             return $result;
         }
         return false;
     }
     return $str;
 }