Feb 14

Мдя, заработался совсем… Писать нет времени абсолютно… Поэтому сегодня будут ссылки:

И напоследок: мне недавно нужен был перевод из русского UTF-8 на латиницу в PHP. Ддо этого я его делал так: считываем по символу (или по нескольку символов) из строки и строим новую строку транслитерированием. Из плюсов - быстро, из минусов - напрягает выбирать по нескольку букв. Потом мне предложили использовать str_replace. Из плюсов - быстро пишется. К сожалению, долго работает. :) Есть и еще один вариант:

function rus_to_translit($string)
{
  $converter = array(
    'а' => 'a',  'б' => 'b',  'в' => 'v',   'г' => 'g',  'д' => 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 
    'з' => 'z',  'и' => 'i',  'й' => 'y',   'к' => 'k',  'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 
    'п' => 'p',  'р' => 'r',  'с' => 's',   'т' => 't',  'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 
    'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ь' => '\'', 'ы' => 'y', 'ъ' => '',  'э' => 'e', 'ю' => 'yu', 
    'я' => 'ya', 
    'А' => 'A',  'Б' => 'B',  'В' => 'V',   'Г' => 'G',  'Д' => 'D', 'Е' => 'E', 'Ё' => 'E', 'Ж' => 'ZH', 
    'З' => 'Z',  'И' => 'I',  'Й' => 'Y',   'К' => 'K',  'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 
    'П' => 'P',  'Р' => 'R',  'С' => 'S',   'Т' => 'T',  'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 
    'Ч' => 'CH', 'Ш' => 'SH', 'Щ' => 'SCH', 'Ь' => '\'', 'Ы' => 'Y', 'Ъ' => '',  'Э' => 'E', 'Ю' => 'YU', 
    'Я' => 'YA', 
  );
  
  return strtr($string, $converter);
}

При этом не забудьте файл, в который вы это пишете сохранить в кодировке UTF-8. ИМХО, оптимальный вариант.

PS. Не забудьте сегодня поздравить свои половинки с днем всех влюбленных!

written by fxposter \\ tags: ,


4 Responses to “Ссылки по Symfony и маленький конвертер”

  1. 1. Антон Исайкин Says:

    1. Неплохо было бы массив сделать статиком.
    2. Кстати, если делать преобразование обратно, то массив надо гнать с конца, чтобы сначала преобразовать ‘sch’, а только потом ‘s’.

  2. 2. FX Poster Says:

    1. Угу, это можно, пасиб.
    2. Просто преобразование назад процедура встречающаяся реже. По крайней мере я эту функцию использовал в формировании slug’ов.

  3. 3. anonymous Says:

    а чем не подошел iconv с ключем //TRANSLIT ?

  4. 4. FX Poster Says:

    А ты ему русский текст подай – увидишь ;)

Leave a Reply