Часто возникают задачи, когда надо перевести на транслит какое-либо слово. Например, у вас в БД есть названия городов, и вы хотите сделать для них url на транслите или перевести имена ваших друзей, да мало ли какие задачи могут быть решены при помощи функции транслита!
Перед вами готовая функция, которая принимает на вход некое слово на русском языке (аргумент $text
), а возвращает уже переведенный на транслит вариант этого слова. Идея функции транслита в том, чтобы искать символы в массиве $find
и замещать их символами из массива $replace
. Данная функция транслита оптимизирована для создания ЧПУ (человеко-понятных урлов), поэтому если вы хотите использовать её для «более простых» вещей, то можете отредактировать массивы в связи с вашими предпочтениями (не буквенные символы я добавил после буквы «я»), ещё можно убрать strtoLower()
.
/** * Транслит * @param $text * @return string */ public static function translit($text) { $find=array('А','а','Б','б','В','в','Г','г','Д','д','Е','е','Ё','ё', 'Ж','ж','З','з','И','и','Й','й','К','к','Л','л','М','м', 'Н','н','О','о','П','п','Р','р','С','с','Т','т','У','у', 'Ф','ф','Х','х','Ц','ц','Ч','ч','Ш','ш','Щ','щ','Ъ','ъ', 'Ы','ы','Ь','ь','Э','э','Ю','ю','Я','я', '№',' '); $replace=array('A','a','B','b','V','v','G','g','D','d','E','e','Yo','yo', 'Zh','zh','Z','z','I','i','J','j','K','k','L','l','M','m', 'N','n','O','o','P','p','R','r','S','s','T','t','U','u','F', 'f','H','h','Ts','ts','Ch','ch','Sh','sh','Sch','sch', '','','Y','y','','','E','e','Yu','yu','Ya','ya', '','_'); return strtolower(preg_replace('/[^\w\d\s_-]*/','',str_replace($find,$replace,$text))); }