Показать сообщение отдельно
Старый 23.12.2011, 22:06
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 1  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Arrow Транслитерация при загрузке файла на сервер

Пытаюсь загрузить файл с русскими буквами на сервер. Делаю транслитерацию. На обычной строке функция выдаёт нормальный, предсказуемый результат,а когда передаю ей $_FILES['Filedata']['name']; начинается чтото не предсказуемое!
PHP код:
<?php

    $todayDate 
$_POST['todayDate']; //принимаем дату
    
$filename $_FILES['Filedata']['name']; //имя файла
    
$filetmpname $_FILES['Filedata']['tmp_name']; //адрес tmp
    
$fileType $_FILES["Filedata"]["type"]; //тип файла
    
$fileSizeMB = ($_FILES["Filedata"]["size"] / 1024 1000); //размер файла
    
$newFileName encodeString($filename); // Записывает в лог 
    
$someName encodeString("серпом_по_яйцам.png");
    
move_uploaded_file($_FILES['Filedata']['tmp_name'], "images/".encodeString($filename)); //сохраняем файл в папку images
    
$myFile "log.txt"//файл для хранения логов
    
$fh fopen($myFile'a') or die("can't open file"); //открываем его
    
$stringData "\n\ntodayDate: $todayDate \n FileName: $newFileName \n TmpName: $filetmpname \n Type: $fileType \n Size: $fileSizeMB MegaBytes";
    
fwrite($fh$stringData); //записываем в файл логов данные
    
fclose($fh); //закрываем файл логов
    
    
function encodeString($st)
  {
    
// Сначала заменяем "односимвольные" фонемы.
    
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
    
"abvgdeeziyklmnoprstufh'iei");
    
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
    
"ABVGDEEZIYKLMNOPRSTUFH'IEI");
    
// Затем - "многосимвольные".
    
$st=strtr($st
                    array(
                        
"ж"=>"zh""ц"=>"ts""ч"=>"ch""ш"=>"sh"
                        
"щ"=>"shch","ь"=>"""ю"=>"yu""я"=>"ya",
                        
"Ж"=>"ZH""Ц"=>"TS""Ч"=>"CH""Ш"=>"SH"
                        
"Щ"=>"SHCH","Ь"=>"""Ю"=>"YU""Я"=>"YA",
                        
"ї"=>"i""Ї"=>"Yi""є"=>"ie""Є"=>"Ye"
                        
)
             );
    
// Возвращаем результат.
    
return $st;
  }
?>
прихожу к выводу что проблема в кодировке строки которую я пытаюсь транслитерировать! Следовательно вопрос в том как поменять кодировку этой строки или как-то ещё можно исправить ситуацию?
кстати если просто записываю в лог имя файла которое приходит - пишется нормально русскими буквами, но вот после траслита корявое становится.