[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как сделать лучше?
gletscherl
перевод русских букв в английские:
PHP
function handler(&$object) {
//русский->английский
//буквы нижнего регистра
$object=str_replace("а""a"$object);
$object=str_replace("б""b"$object);
$object=str_replace("в""v"$object);
$object=str_replace("г""g"$object);
$object=str_replace("д""d"$object);
$object=str_replace("е""e"$object);
$object=str_replace("ё""e`"$object);
$object=str_replace("ж""j"$object);
$object=str_replace("з""z"$object);
$object=str_replace("и""i"$object);
$object=str_replace("й""i`"$object);
$object=str_replace("к""k"$object);
$object=str_replace("л""l"$object);
$object=str_replace("м""m"$object);
$object=str_replace("н""n"$object);
$object=str_replace("о""o"$object);
$object=str_replace("п""p"$object);
$object=str_replace("р""r"$object);
$object=str_replace("с""s"$object);
$object=str_replace("т""t"$object);
$object=str_replace("у""u"$object);
$object=str_replace("ф""f"$object);
$object=str_replace("х""h"$object);
$object=str_replace("ц""c"$object);
$object=str_replace("ч""c`"$object);
$object=str_replace("ш""s`"$object);
$object=str_replace("щ""s``"$object);
$object=str_replace("ъ""x"$object);
$object=str_replace("ы""i``"$object);
$object=str_replace("ь""x`"$object);
$object=str_replace("э""e``"$object);
$object=str_replace("ю""u`"$object);
$object=str_replace("я""y`"$object);
$object=str_replace(" ""_"$object);
//буквы верхнего регистра
$object=str_replace("А""A"$object);
$object=str_replace("Б""B"$object);
$object=str_replace("В""V"$object);
$object=str_replace("Г""G"$object);
$object=str_replace("Д""D"$object);
$object=str_replace("Е""E"$object);
$object=str_replace("Ё""E`"$object);
$object=str_replace("Ж""J"$object);
$object=str_replace("З""Z"$object);
$object=str_replace("И""I"$object);
$object=str_replace("Й""I`"$object);
$object=str_replace("К""K"$object);
$object=str_replace("Л""L"$object);
$object=str_replace("М""M"$object);
$object=str_replace("Н""N"$object);
$object=str_replace("О""O"$object);
$object=str_replace("П""P"$object);
$object=str_replace("Р""R"$object);
$object=str_replace("С""S"$object);
$object=str_replace("Т""T"$object);
$object=str_replace("У""U"$object);
$object=str_replace("Ф""F"$object);
$object=str_replace("Х""H"$object);
$object=str_replace("Ц""C"$object);
$object=str_replace("Ч""C`"$object);
$object=str_replace("Ш""S`"$object);
$object=str_replace("Щ""S``"$object);
$object=str_replace("Ъ""X"$object);
$object=str_replace("Ы""I``"$object);
$object=str_replace("Ь""X`"$object);
$object=str_replace("Э""E``"$object);
$object=str_replace("Ю""U`"$object);
$object=str_replace("Я""Y`"$object);
$object=trim($object);
}
function 
handler_rev(&$object) {
//английский->русский
//буквы нижнего регистра
$object=str_replace("a""а"$object);
$object=str_replace("b""б"$object);
$object=str_replace("v""в"$object);
$object=str_replace("g""г"$object);
$object=str_replace("d""д"$object);
$object=str_replace("e""е"$object);
$object=str_replace("e`""ё"$object);
$object=str_replace("j""ж"$object);
$object=str_replace("z""з"$object);
$object=str_replace("i""и"$object);
$object=str_replace("i`""й"$object);
$object=str_replace("k""к"$object);
$object=str_replace("l""л"$object);
$object=str_replace("m""м"$object);
$object=str_replace("n""н"$object);
$object=str_replace("o""о"$object);
$object=str_replace("p""п"$object);
$object=str_replace("r""р"$object);
$object=str_replace("s""с"$object);
$object=str_replace("t""т"$object);
$object=str_replace("u""у"$object);
$object=str_replace("f""ф"$object);
$object=str_replace("h""х"$object);
$object=str_replace("c""ц"$object);
$object=str_replace("c`""ч"$object);
$object=str_replace("s`""ш"$object);
$object=str_replace("s``""щ"$object);
$object=str_replace("x""ъ"$object);
$object=str_replace("i``""ы"$object);
$object=str_replace("x`""ь"$object);
$object=str_replace("e``""э"$object);
$object=str_replace("u`""ю"$object);
$object=str_replace("y`""я"$object);
$object=str_replace("_"" "$object);
//буквы верхнего регистра
$object=str_replace("A""А"$object);
$object=str_replace("B""Б"$object);
$object=str_replace("V""В"$object);
$object=str_replace("G""Г"$object);
$object=str_replace("D""Д"$object);
$object=str_replace("E""Е"$object);
$object=str_replace("E`""Ё"$object);
$object=str_replace("J""Ж"$object);
$object=str_replace("Z""З"$object);
$object=str_replace("I""И"$object);
$object=str_replace("I`""Й"$object);
$object=str_replace("K""К"$object);
$object=str_replace("L""Л"$object);
$object=str_replace("M""М"$object);
$object=str_replace("N""Н"$object);
$object=str_replace("O""О"$object);
$object=str_replace("P""П"$object);
$object=str_replace("R""Р"$object);
$object=str_replace("S""С"$object);
$object=str_replace("T""Т"$object);
$object=str_replace("U""У"$object);
$object=str_replace("F""Ф"$object);
$object=str_replace("H""Х"$object);
$object=str_replace("C""Ц"$object);
$object=str_replace("C`""Ч"$object);
$object=str_replace("S`""Ш"$object);
$object=str_replace("S``""Щ"$object);
$object=str_replace("X""Ъ"$object);
$object=str_replace("I``""Ы"$object);
$object=str_replace("X`""Ь"$object);
$object=str_replace("E``""Э"$object);
$object=str_replace("U`""Ю"$object);
$object=str_replace("Y`""Я"$object);
$object=str_replace(".php"""$object);
$object=trim($object);
}


может можно сократить код?



Спустя 6 минут, 23 секунды (26.06.2009 - 08:40) glock18 написал(а):
не знаю, может есть какой-нибудь умный транслит, но str_replace можно передавать массивы.

например:
PHP
$object str_replace(
    array(
'а''б''в'),
    array(
'a''b''v'),
    
$object
);

будут соответственно заменены русская "а" на английскую, "б" на "b", "в" на "v".

Спустя 14 минут, 45 секунд (26.06.2009 - 08:55) Kuliev написал(а):
gletscherl
И не лень тебе было столько писать ? huh.gif

Спустя 4 минуты, 11 секунд (26.06.2009 - 08:59) glock18 написал(а):
копирайт рулит))) без него никак smile.gif

Спустя 11 минут, 28 секунд (26.06.2009 - 09:10) gletscherl написал(а):
может копипаст? wink.gif

Спустя 2 минуты, 43 секунды (26.06.2009 - 09:13) glock18 написал(а):
ээ? нее, я имел ввиду, что у тебя точно без копипаста не обошлось.

я тебе выше написал, как лучше и короче можно.

Спустя 3 минуты (26.06.2009 - 09:16) Kuliev написал(а):
gletscherl
range("A","Z"); wink.gif

Спустя 2 минуты, 4 секунды (26.06.2009 - 09:18) glock18 написал(а):
да, для английских буковок подойдет вполне. интересная функция.

Спустя 9 часов, 6 минут, 54 секунды (26.06.2009 - 18:25) Sylex написал(а):
типа того...

PHP
function translit($st){
 
$st=strtr($st,
                
                
"абвгдежзийклмнопрстуфыэАБВГДЕЖЗИЙКЛМНОПРСТУФЫЭ",
                
"abvgdegziyklmnoprstufieABVGDEGZIYKLMNOPRSTUFIE"
             
);

 
$st=strtr($st,array (
              
              
'ё'=>"yo"'х'=>"h"'ц'=>"ts"'ч'=>"ch"'ш'=>"sh",
              
'щ'=>"shch"'ъ'=>""'ь'=>""'ю'=>"yu"'я'=>"ya",
              
'Ё'=>"YO"'Х'=>"H"'Ц'=>"TS"'Ч'=>"CH"'Ш'=>"SH",
              
'Щ'=>"SHCH"'Ъ'=>""'Ь'=>""'Ю'=>"YU"'Я'=>"YA"
         
));

    return 
$st;

}

Спустя 2 минуты, 21 секунда (26.06.2009 - 18:27) kirik написал(а):
В данном случае range не прокатит, потому как английский алфавит идет не по порядку.

Можно использовать ассоциативный массив:
PHP
$text 'Шла Саша по шоссе';
$letters = array(
    
'a' => 'a',
    
'б' => 'b',
    
'в' => 'v',
    
//....
);
echo 
str_replace(array_keys($letters), array_values($letters), $text);

Спустя 13 минут, 49 секунд (26.06.2009 - 18:41) glock18 написал(а):
Цитата (kirik @ 26.06.2009 - 15:27)
В данном случае range не прокатит, потому как английский алфавит идет не по порядку.

в смысле как это? huh.gif насколько я помню, так английский как раз подряд идет, а вот русский нет. правда последний раз когда об этом задумывался, это было года 2 назад, когда я на C лабы делал какие-то smile.gif

Спустя 3 минуты, 57 секунд (26.06.2009 - 18:45) kirik написал(а):
Цитата (glock18 @ 26.06.2009 - 10:41)
в смысле как это?

Всмысле тут русские буквы заменяются на английские и алфавит будет не a,b,c,d.. а a,b,v,g.

Спустя 3 минуты, 10 секунд (26.06.2009 - 18:48) Kuliev написал(а):
Мда... Что то я не рассмотрел внимательно код автора unsure.gif (Надо было вчера меньше пива пить tongue.gif )
Как сказал kirik range() тут не поможет, массив нужно ручками набирать!

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.