Показать сообщение отдельно

  #8  
Старый 29.04.2009, 13:45
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами: 9223466

Репутация: 3171


По умолчанию

Цитата:
Сообщение от Nightmarе  
У меня к вам следующий вопрос ©

Есть функция замены всех русских символов на английские, а так-же всех спецсимволов на _

Код:
 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"

Поясните почему так происходит, и как это исправить.
Если ктото сталкнетьсяя с такой проблеой,то вся проблема была в basename($_FILES['userfile']['name']);
Без basename все прекрасно работает,ведь в $_FILES['userfile']['name'] находиться название,без пути,так что вот в чем были траблы.
 
Ответить с цитированием