Как при помощи функции PHP перевести кириллические слова в транслит (латиницу)? В интернете много способов. Я скопировал функцию из интернета и немного переделал её. Эта функция нужна для переименования кириллических имён файлов в имена на латинице. Переменная $translit - это ассоциативный массив PHP.
/*
* translit($str)
* транслитерация символов
* все символы, которые не входят в массив $translit,
* будут заменены на _ (нижнее подчёркивание)
* */
function translit($str)
{
$translit = array(
"А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
"Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
"Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
"О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
"У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
"Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
"Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
"ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"
);
// работают элементы массива
$str = strtr($str,$translit);
// дополнительные очистки
// в нижний регистр
$str = mb_strtolower($str);
// заменяем все ненужное нам на "-"
$str = preg_replace('/[^A-Za-z0-9_]/', '_', $str);
// удаляем начальные и конечные '_'
$str = trim($str, "_");
return $str;
}
$str = 'Читайте книги «PHP для начинающих» 2015';
echo translit($str);
Функция mb_strtolower() переводит заглавные буквы в прописные. Изменится начертание строки. Если попадается специальный символ, то он заменяется на нижнее подчёркивание. $,№,% заменяются на "_". Благодаря функции preg_replace() происходит замена всех символов не относящихся к буквам и числам. На всякий случай я очищу начало и конец строки от нижнего подчеркивания "_".