VANHALEN
Новичок
Здравствуйте.. Есть у меня подруга, которая любит заголовки капс-локом писать. Переделывая ей сайт, использовал функцию для создания алиасов к статьям. Внезапно, ни с того ни с сего, фунция начала спотыкаться на заглавные буквы Ч и Я (других пока не заметил). Причём до этого я сделал эти алиасы автоматом (написал скрипт который берёт из базы заголовки, транслитерирует и записывает в поле алиаса) . А тут полез в админку что-то поправить - бац и такая вот беда.
Собственно функция.
Кодировка документа и базы cp1251. Сервер локальный - на денвере. Использую этот скрипт постоянно и во многих местах. Такой херни не наблюдалось. Может есть в функции какая-то явная ошибка, которую я понять не могу? все буквы до и после указанных переводятся нормально, а в середине как есть - торчит Я или Ч и алиас уже естественно не работает. Кстати, маленькими буквами всё путём.
Собственно функция.
PHP:
function translit($insert)
{
setlocale (LC_ALL, 'ru_RU.CP1251');
$insert = mb_strtolower($insert); // Если работаем с юникодными строками
//$insert = strtolower($insert); // Все почему-то упорно переводят и заглавные и прописные, а потом делают strtolower Я сделал сразу, тем самым уменьшив массив
$replase = array(
// Буквы
'а'=>'a',
'б'=>'b',
'в'=>'v',
'г'=>'g',
'д'=>'d',
'е'=>'e',
'ё'=>'yo',
'ж'=>'zh',
'з'=>'z',
'и'=>'i',
'й'=>'j',
'к'=>'k',
'л'=>'l',
'м'=>'m',
'н'=>'n',
'о'=>'o',
'п'=>'p',
'р'=>'r',
'с'=>'s',
'т'=>'t',
'у'=>'u',
'ф'=>'f',
'х'=>'h',
'ц'=>'c',
'ч'=>'ch',
'Ч'=>'ch',
'ш'=>'sh',
'щ'=>'shh',
'ъ'=>'j',
'ы'=>'y',
'ь'=>'',
'э'=>'e',
'ю'=>'yu',
'я'=>'ya',
//'Я'=>'ya',
// Всякие знаки препинания и пробелы
' '=>'-',
' - '=>'-',
'_'=>'-',
'–'=>'-',
' – '=>'-',
//Удаляем
'.'=>'',
'№'=>'',
'«'=>'',
'»'=>'',
':'=>'',
';'=>'',
','=>'',
'!'=>'',
'?'=>'',
'>'=>'',
'<'=>'',
'&'=>'',
'*'=>'',
'%'=>'',
'$'=>'',
'"'=>'',
'\''=>'',
'('=>'',
')'=>'',
'`'=>'',
'+'=>'',
'/'=>'',
'\\'=>'',
);
$insert=preg_replace("/ +/"," ",$insert); // Удаляем лишние пробелы
$insert = strtr($insert,$replase);
return $insert;
}