/** * Transliterates the input string to an ASCII equivalent string. * Transliteration is language dependent. * @param string $string The input string, UTF-8. * @param string $language Language identificator ('bg', 'ru', ...) * @return string */ public static function to_ascii($string, $language = null) { $language = self::detect_language($language); $string = self::cyr_to_lat($string, $language); static $transliterator_ids = array(); if (INTL_INSTALLED && class_exists('Transliterator', false)) { if (empty($transliterator_ids)) { $transliterator_ids = Transliterator::listIDs(); } $transliterator_id = null; switch ($language) { case 'ar': $transliterator_id = 'Arabic-Latin'; break; case 'el': $transliterator_id = 'Greek-Latin'; break; case 'mk': $transliterator_id = 'Macedonian-Latin/BGN'; break; case 'sr': $transliterator_id = 'Serbian-Latin/BGN'; break; case 'uk': $transliterator_id = 'Ukrainian-Latin/BGN'; break; case 'ko': $transliterator_id = 'Korean-Latin/BGN'; break; case 'th': $transliterator_id = 'Thai-Latin'; break; case 'gu': $transliterator_id = 'Gujarati-Latin'; break; case 'ta': $transliterator_id = 'Tamil-Latin'; break; case 'az': $transliterator_id = 'Azerbaijani-Latin/BGN'; break; } if (!in_array($transliterator_id, $transliterator_ids)) { $transliterator_id = null; } if ($transliterator_id == '') { $transliterator_id = 'Any-Latin; Latin-ASCII'; } else { $transliterator_id .= '; Any-Latin; Latin-ASCII'; } $transliterator = Transliterator::create($transliterator_id); $new_string = @$transliterator->transliterate($string); if ($new_string !== false) { $string = $new_string; } unset($new_string); } static $search; static $replace; if (IS_CODEIGNITER) { if (!isset($search) || !is_array($search)) { // Added by Ivan Tcholakov, 03-OCT-2013. if (file_exists(COMMONPATH . 'config/foreign_chars.php')) { include COMMONPATH . 'config/foreign_chars.php'; } if (file_exists(COMMONPATH . 'config/' . ENVIRONMENT . '/foreign_chars.php')) { include COMMONPATH . 'config/' . ENVIRONMENT . '/foreign_chars.php'; } // if (file_exists(APPPATH . 'config/foreign_chars.php')) { include APPPATH . 'config/foreign_chars.php'; } if (file_exists(APPPATH . 'config/' . ENVIRONMENT . '/foreign_chars.php')) { include APPPATH . 'config/' . ENVIRONMENT . '/foreign_chars.php'; } if (empty($foreign_characters) || !is_array($foreign_characters)) { $search = array(); $replace = array(); } else { $search = array_keys($foreign_characters); $replace = array_values($foreign_characters); } } $string = preg_replace($search, $replace, $string); } if (ICONV_INSTALLED) { $string = iconv('UTF-8', 'ASCII//TRANSLIT', $string); } return $string; }
<?php ini_set("intl.error_level", E_WARNING); var_dump(count(transliterator_list_ids()) > 100); var_dump(count(Transliterator::listIDs()) > 100); echo "Done.\n";