|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
С нами:
10018169
Репутация:
1680
|
|
У меня к вам следующий вопрос ©
Есть функция замены всех русских символов на английские, а так-же всех спецсимволов на _
Код:
function transliteral($text=null){
$maska=array('Ч'=>'Ch','Ш'=>'Sh','Щ'=>'Sch','Ю'=>'Yu'
,'ш'=>'sh','щ'=>'sch','ю'=>'yu','я'=>'ya'
,'А'=>'A','Б'=>'B','В'=>'V','Г'=>'G'
,'Д'=>'D','Е'=>'E','Ё'=>'E','Ж'=>'J'
,'З'=>'Z','И'=>'I','Й'=>'Y','К'=>'K'
,'Л'=>'L','М'=>'M','Н'=>'N','О'=>'O'
,'П'=>'P','Р'=>'R','С'=>'S','Т'=>'T'
,'У'=>'U','Ф'=>'F','Х'=>'H','Ц'=>'C'
,'Ъ'=>'"','Ы'=>'Y','Ь'=>'b','Э'=>'E'
,'а'=>'a','б'=>'b','в'=>'v','г'=>'g'
,'д'=>'d','е'=>'e','ё'=>'e','ж'=>'j'
,'з'=>'z','и'=>'i','й'=>'y','к'=>'k'
,'л'=>'l','м'=>'m','н'=>'n','о'=>'o'
,'п'=>'p','р'=>'r','с'=>'s','т'=>'t'
,'у'=>'u','ф'=>'f','х'=>'h','ц'=>'c'
,'ь'=>'b','ы'=>'y','ъ'=>'"','э'=>'e'
,'Я'=>'Ya','ч'=>'ch' ,' '=>'_','@'=>'_'
,'#'=>'_',','=>'_','{'=>'_','}'=>'_'
,'['=>'_',']'=>'_');
return !empty($text) ? strtr($text,$maska) : null;
}
Она работает хорошо если работать с текстом напрямую, но при заливке файлов криво заменяет имена файлов.
Вот например простой текст:
Код:
$lol = "Текстовый документ (2).txt";
echo transliteral($lol);
Выводит: Tekstovyy_dokument_(2).txt
Но если воспользоваться вот так:
Код:
$uploadfile = basename($_FILES['userfile']['name']);
move_uploaded_file($_FILES['userfile']['tmp_name'], transliteral($uploadfile))
То файлы криво называются, например тот-же "Текстовый документ (2).txt" отображается потом как: "_dokument_(2).txt"
Поясните почему так происходит, и как это исправить.
|