ФорумПрограммированиеPHP для идиотов → Перевод названия файла в транслит

Перевод названия файла в транслит

  • Animator

    Сообщения: 194 Репутация: N Группа: Кто попало

    Spritz 15 апреля 2008 г. 6:11, спустя 2 минуты

    блин, просто написал относительный путь и все работает… спасибо за внимание!
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz 25 апреля 2008 г. 2:39, спустя 9 дней 20 часов 28 минут

    Разрешите потупить :)



    function rus2en($str){
    $str= strtolower($str);
    // Спец. знаки
    $str= ereg_replace('-', '_', $str);
    $str= ereg_replace(' ', '_', $str);
    $str= ereg_replace('\'', '', $str);
    $str= ereg_replace('"', '', $str);
    $str= ereg_replace('»', '', $str);
    $str= ereg_replace('«', '', $str);
    $str= ereg_replace('№', '', $str);
    // Строчные
    $str= ereg_replace('а', 'a', $str);
    $str= ereg_replace('б', 'b', $str);
    $str= ereg_replace('в', 'v', $str);
    $str= ereg_replace('г', 'g', $str);
    $str= ereg_replace('д', 'd', $str);
    $str= ereg_replace('е', 'e', $str);
    $str= ereg_replace('ё', 'e', $str);
    $str= ereg_replace('ж', 'g', $str);
    $str= ereg_replace('з', 'z', $str);
    $str= ereg_replace('и', 'i', $str);
    $str= ereg_replace('й', 'i', $str);
    $str= ereg_replace('к', 'k', $str);

    $str= ereg_replace('л', 'l', $str);
    $str= ereg_replace('м', 'm', $str);
    $str= ereg_replace('н', 'n', $str);
    $str= ereg_replace('о', 'o', $str);
    $str= ereg_replace('п', 'p', $str);
    $str= ereg_replace('р', 'r', $str);
    $str= ereg_replace('с', 's', $str);
    $str= ereg_replace('т', 't', $str);
    $str= ereg_replace('у', 'u', $str);
    $str= ereg_replace('У', 'u', $str); //?
    $str= ereg_replace('ф', 'f', $str);

    $str= ereg_replace('х', 'h', $str);
    $str= ereg_replace('ц', 'tz', $str);
    $str= ereg_replace('ч', 'ch', $str);
    $str= ereg_replace('ш', 'sh', $str);
    $str= ereg_replace('щ', 'chsh', $str);
    $str= ereg_replace('ы', 'y', $str);
    $str= ereg_replace('ь', '', $str);
    $str= ereg_replace('ъ', '', $str);
    $str= ereg_replace('э', 'e', $str);
    $str= ereg_replace('ю', 'u', $str);
    $str= ereg_replace('я', 'ya', $str);

    // Прописные

    $str= ereg_replace('А', 'a', $str);
    $str= ereg_replace('Б', 'b', $str);
    $str= ereg_replace('В', 'v', $str);
    $str= ereg_replace('Г', 'g', $str);
    $str= ereg_replace('Д', 'd', $str);
    $str= ereg_replace('Е', 'e', $str);
    $str= ereg_replace('Ё', 'e', $str);
    $str= ereg_replace('Ж', 'g', $str);
    $str= ereg_replace('З', 'z', $str);
    $str= ereg_replace('И', 'i', $str);
    $str= ereg_replace('Й', 'i', $str);
    $str= ereg_replace('К', 'k', $str);

    $str= ereg_replace('Л', 'l', $str);
    $str= ereg_replace('М', 'm', $str);
    $str= ereg_replace('Н', 'n', $str);
    $str= ereg_replace('О', 'o', $str);
    $str= ereg_replace('П', 'p', $str);
    $str= ereg_replace('Р', 'r', $str);
    $str= ereg_replace('С', 's', $str);
    $str= ereg_replace('Т', 't', $str);
    $str= ereg_replace('У', 'u', $str);
    $str= ereg_replace('Ф', 'f', $str);

    $str= ereg_replace('Х', 'h', $str);
    $str= ereg_replace('Ц', 'tz', $str);
    $str= ereg_replace('Ч', 'ch', $str);
    $str= ereg_replace('Ш', 'sh', $str);
    $str= ereg_replace('Щ', 'chsh', $str);
    $str= ereg_replace('Ы', 'y', $str);
    $str= ereg_replace('Ь', '', $str);
    $str= ereg_replace('Ъ', '', $str);
    $str= ereg_replace('Э', 'e', $str);
    $str= ereg_replace('Ю', 'u', $str);
    $str= ereg_replace('Я', 'ya', $str);

    return $str;
    }

    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 25 апреля 2008 г. 2:41, спустя 2 минуты 24 секунды


    Разрешите потупить :)

    зачем?

    	function Translit($text)
    {
    $text = strtolower($text);
    $text2 = $text;
    for ($i = ord('а'); $i <= ord('я'); $i++)
    {
    $big=$i-32;
    $russian[]=chr($i);
    $russian_big[]=chr($big);
    }
    $russian[]=chr(ord('ё'));
    $russian_big[]=chr(ord('Ё'));

    array_push($russian, " ", "-","/","+",",","(",")","\"");
    array_push($russian_big, " ", "-","/","+",",","(",")","\"");


    $english = array ('a','b','v','g','d','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch',
    'sh','sh','','y','','e','yu','ya','yo','-','-','','','','','','','');


    $text_translit = str_replace($russian, $english, $text2);
    $text_translit = str_replace($russian_big, $english, $text_translit);
    $text_translit = strtolower($text_translit);

    $text_translit = preg_replace("#[^a-z0-9-_\.]#i", "", $text_translit);

    return ($text_translit);
    }


    или

    var mapRu = "а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я, " . split(",");
    var mapRuBig = "А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Ч,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я" . split(",");
    var mapEn = "a,b,v,g,d,e,e,zh,z,i,y,k,l,m,n,o,p,r,s,t,u,f,h,ts,ch,sh,sch,,i,,e,yu,ya,-" . split(",");

    function Translit(str)
    {
    var s = str;

    for(i = 0; i < mapRu.length; ++i) {
    while (s.indexOf(mapRu) >= 0) {
    s = s.replace(mapRu, mapEn);
    }
    }

    for(i = 0; i < mapRuBig.length; ++i) {
    while (s.indexOf(mapRuBig) >= 0) {
    s = s.replace(mapRuBig, mapEn);
    }
    }

    return (s);
    }
    все умрут, а я изумруд
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz 25 апреля 2008 г. 4:56, спустя 2 часа 14 минут 48 секунд

    Еще фишка. Заметил, что при загрузке файлов - а пользователи у меня, как правило, виндовозники - часто встречаются файлы с символами №, «, » от них тожа надо избавляться! Иначе, если файл загружается и не меняет имя на какую-нибудь хэш последовательность англицких букв и знаков, а проходит транслит, то потом файлы тупо не открываются из-за наличия №, «, ». Убивайте эти символы!
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 25 апреля 2008 г. 5:00, спустя 3 минуты 38 секунд

    ну вот там прег_реплейс это и отрезает
    все умрут, а я изумруд
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz 27 апреля 2008 г. 21:29, спустя 2 дня 16 часов 28 минут

    Точно? хм. Не заметил. сорри. =:0)
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru

Пожалуйста, авторизуйтесь, чтобы написать комментарий!