|
|
|
| дан текст, который может сождержать символы, русский и английский алфавит. как перевести в текст, где все англиские буквы остаются на месте, русские заменяются эквивалентами английских (например р-r, д-d, и т.п.), а остальные символы - символом подчеркивания?
у меня есть простой вариант - это
$string = "tra-ta-ta русские слова and english worlds and any symbols #@*())";
$replace = array("а" => "a", "б" => "b", ....);
echo strtr($string,$replace);
|
но слишком громоздко получается. думаю, есть какое-то более изящное решение. возможно с рег. выражениями, а возможно с пхп.. | |
|
|
|
|
|
|
|
для: SDL
(09.12.2008 в 02:53)
| |
<?php
// Транслитерация строк
function transliterate($st) {
$st = strtr($st,
"абвгдежзийклмнопрстуфыэАБВГДЕЖЗИЙКЛМНОПРСТУФЫЭ",
"abvgdegziyklmnoprstufieABVGDEGZIYKL MNOPRSTUFIE"
);
$st = strtr($st, array(
'ё'=>"yo", 'х'=>"h", 'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh",
'щ'=>"shch", 'ъ'=>'', 'ь'=>'', 'ю'=>"yu", 'я'=>"ya",
'Ё'=>"Yo", 'Х'=>"H", 'Ц'=>"Ts", 'Ч'=>"Ch", 'Ш'=>"Sh",
'Щ'=>"Shch", 'Ъ'=>'', 'Ь'=>'', 'Ю'=>"Yu", 'Я'=>"Ya",
));
return $st;
}
echo transliterate("tra-ta-ta русские слова and english worlds and any symbols #@*())");
?>
|
Выведет: tra-ta-ta russkie slova and english worlds and any symbols #@*()) | |
|
|
|
|
|
|
|
для: Pon4ik
(09.12.2008 в 13:22)
| | я так и сделал. только добавил еще замену небуквенных символов (кроме цифр) на символ подчеркивания
function translation($string)
{
$replace = array("Ю" => "a","А" => "b",
"Б" => "v","Ц" => "g","Д" => "d","Е" => "e","T" => "e",
"Ф" => "j","Г" => "z","Х" => "i","И" => "i","Й" => "k",
"К" => "l","Л" => "m","М" => "n","Н" => "o","О" => "p",
"П" => "r","Я" => "s","Р" => "t","С" => "u","Т" => "f",
"У" => "h","Ж" => "c","В" => "ch","Ь" => "sh",
"Ы" => "sch","З" => "_","Ш" => "y","Э" => "_",
"Щ" => "e","Ч" => "yu","Ъ" => "ya");
$string = strtr($string,$replace);
return preg_replace('/[^a-zA-ZЮ-Ъю-ъ0-9]{1}/','_',$string);
}
echo translation("русские символы и endglish words and any symbols !@#$%^&*()_+");
|
| |
|
|
|
|
|
|
|
для: SDL
(09.12.2008 в 21:09)
| | cheops, гляньте что с дизайном...
хотя у меня пробелы стоят перед и после стрелок =>
кстати, только сейчс заметил - массив не правильно отображается (скопировал с Бреда, кодировка koi8). | |
|
|
| |
|
|
|
|
для: ddhvvn
(09.12.2008 в 21:17)
| | ок | |
|
|
|
|