[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кириллица в латиницу
asandp
Доброго всем онлайна.
Искал функцию которая преобразует все кириллические символы в латиницу, не нашел.
Может есть такая функция?
Если нет, то как можно сделать подобие не прибегая к функциям замены типа str_replae и eregi_replace?



Спустя 24 минуты, 38 секунд (7.12.2009 - 18:18) waldicom написал(а):
два массива и нормально

Спустя 53 минуты, 39 секунд (7.12.2009 - 19:11) asandp написал(а):
это типа один массив кириллические второй латинские, а потом по ключам заменять?

Спустя 4 часа, 2 минуты, 52 секунды (7.12.2009 - 23:14) Romms написал(а):
Цитата
это типа один массив кириллические второй латинские, а потом по ключам заменять?

типа да...

Спустя 10 минут, 22 секунды (7.12.2009 - 23:24) glock18 написал(а):
только не по ключам заменять. str_replace умеет с массивами работать.
http://ru.php.net/manual/en/function.str-replace.php

Спустя 1 час, 20 минут, 55 секунд (8.12.2009 - 00:45) Adil написал(а):
Да парню кажется нужна простая функция транслита..
Вот готовая функция от котерова:

<?php ## Транслитерация строк.
function transliterate($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;
}
echo transliterate("У попа была собака, он ее любил.");
?>

Спустя 57 минут, 14 секунд (8.12.2009 - 01:43) twin написал(а):
При всем моем уважении к Котерову, эта функция не станет работать под UTF-8
Кроме того, транслитерация там немного не по ГОСТу
Вот так лучше:
<?php 

function
transLate($string)
{

$arr = array(
'А' => 'A' , 'Б' => 'B' , 'В' => 'V' , 'Г' => 'G',
'Д' => 'D' , 'Е' => 'E' , 'Ё' => 'JO' , 'Ж' => 'ZH',
'З' => 'Z' , 'И' => 'I' , 'Й' => 'JJ' , 'К' => 'K',
'Л' => 'L' , 'М' => 'M' , 'Н' => 'N' , 'О' => 'O',
'П' => 'P' , 'Р' => 'R' , 'С' => 'S' , 'Т' => 'T',
'У' => 'U' , 'Ф' => 'F' , 'Х' => 'KH' , 'Ц' => 'C',
'Ч' => 'CH', 'Ш' => 'SH', 'Щ' => 'SHH', 'Ъ' => '"',
'Ы' => 'Y' , 'Ь' => '\'', 'Э' => 'EH' , 'Ю' => 'JU',
'Я' => 'JA',
'а' => 'a' , 'б' => 'b' , 'в' => 'v' , 'г' => 'g', 'д' => 'd',
'е' => 'e' , 'ё' => 'jo' , 'ж' => 'zh', 'з' => 'z', 'и' => 'i',
'й' => 'jj', 'к' => 'k' , 'л' => 'l' , 'м' => 'm', 'н' => 'n',
'о' => 'o' , 'п' => 'p' , 'р' => 'r' , 'с' => 's', 'т' => 't',
'у' => 'u' , 'ф' => 'f' , 'х' => 'kh', 'ц' => 'c', 'ч' => 'ch',
'ш' => 'sh', 'щ' => 'shh', 'ъ' => '"' , 'ы' => 'y', 'ь' => '\'',
'э' => 'eh', 'ю' => 'ju' , 'я' => 'ja'
);

$key = array_keys($arr);
$val = array_values($arr);
$translate = str_replace($key, $val, $string);

return $translate;
}
echo (isset($_POST['ok']) && isset($_POST['text']))?nl2br(htmlspecialchars(transLate($_POST['text']))):"Транслитерация";

?>
<form action="?" method="post">
<
textarea name="text" cols="40" rows="10" />Транслитерация</textarea>
<
input name="ok" type="submit" />
</
form>

Спустя 15 часов, 52 минуты, 14 секунд (8.12.2009 - 17:35) asandp написал(а):
Спасибо Всем кто откликнулся! Думаю попробую воспользоваться последним вариантом! Думаю тему можно считать закрытой! Еще раз спасибо!
Быстрый ответ:

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