[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу понять где косяк
m7_priest
Всем привет. Мне показалось этот раздел подходит для моей темы.

Вот пишу тут по работе несложное приложение, и потребовалось создать такую функцию которая будет транслитить русские буквы в имени файла, ну а если в имени будет латиница то она остаётся без изменений. Нифига не работает, поэтому решил прийти сюда за помощью. Гуглил много, не спрашивайте. Написал вот так:

function translit($string)
{
//печать для отладки
print("SRC: $string\n<br>");

$cvt = array(
'a' => 'а', 'b' => 'б', 'v' => 'в',
'g' => 'г', 'd' => 'д', 'e' => 'е',
'e' => 'ё', 'zh' => 'ж', 'z' => 'з',
'i' => 'и', 'y' => 'й', 'k' => 'к',
'l' => 'л', 'm' => 'м', 'n' => 'н',
'o' => 'о', 'p' => 'п', 'r' => 'р',
's' => 'с', 't' => 'т', 'u' => 'у',
'f' => 'ф', 'h' => 'х', 'c' => 'ц',
'ch' => 'ч', 'sh' => 'ш', 'sch' => 'щ',
"'" => 'ъ', 'y' => 'ы', "'" => 'ь',
'e' => 'э', 'yu' => 'ю', 'ya' => 'я',

'A' => 'А', 'B' => 'Б', 'V' => 'В',
'G' => 'Г', 'D' => 'Д', 'E' => 'Е',
'E' => 'Ё', 'ZH' => 'Ж', 'Z' => 'З',
'I' => 'И', 'Y' => 'Й', 'K' => 'К',
'L' => 'Л', 'M' => 'М', 'N' => 'Н',
'O' => 'О', 'P' => 'П', 'R' => 'Р',
'S' => 'С', 'T' => 'Т', 'U' => 'У',
'F' => 'Ф', 'H' => 'Х', 'C' => 'Ц',
'CH' => 'Ч', 'SH' => 'Ш', 'SCH' => 'Щ',
"'" => 'Ъ', 'Y' => 'Ы', "'" => 'Ь',
'E' => 'Э', 'YU' => 'Ю', 'YA' => 'Я',
);


$to_string = "";
for($i=0; $i<strlen($string); ++$i) {
$c=$string[$i];
$find=array_search($c, $cvt);
if($find) { print "FINDED: $find\n<br>"; $c = $find; }
$to_string .= $c;
}
print("DST: $to_string\n<br>");
return $to_string;
}


array _search не отрабатывает ни разу, имя файла просто и остаётся неизменным.
Например:

SRC: qwe_план.rtf
DST: qwe_план.rtf

Тестирую под линуксом на апаче, кодировка UTF-8, кодировка самого скрипта php тоже utf8.

А теперь пинайте. Где я слажал?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.