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

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

  • Animator

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

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

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

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

    Spritz 25 апреля 2008 г. 5: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

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

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


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

    зачем?

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

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


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


    $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(&quot;#[^a-z0-9-_\.]#i&quot;, &quot;&quot;, $text_translit);

    return ($text_translit);
    }


    или

    var mapRu = &quot;а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я, &quot; . split(&quot;,&quot;);
    var mapRuBig = &quot;А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Ч,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я&quot; . split(&quot;,&quot;);
    var mapEn = &quot;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,-&quot; . split(&quot;,&quot;);

    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 г. 7:56, спустя 2 часа 14 минут 48 секунд

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

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

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

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

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

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

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

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