/**
  * 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";