Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: транслитирация. Обратная!
 
 автор: P@Sol   (18.08.2005 в 15:59)   письмо автору
 
 

решил побаловаться и вот добаловался, что пришлось лезть за помощью:(

делал скрипт транслитирации. зделал! думаю: "чего то не хватает?! А если надо транслитировать (тьфу!) обратно?" и начал делать...но пока ничего хорошего не получилось. Поэтому и прошу помощи.


<?
$text 
"Этот текст написан по-русски и еще писать. А ты куда идешь?";
$dlina strlen($text);
echo 
"$text<br>";

        
$r_trans = array("а","б","в","г","д","е","ё","ж","з","и","й","к","л","м",
                        
"н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","э",
                        
"ю","я","ъ","ы","ь");
        
$e_trans = array("a","b","v","g","d","e","e","j","z","i","i","k","l","m",
                        
"n","o","p","r","s","t","u","f","h","c","4","sh","s4",
                        
"e","yu","ya","'","i","'");
for (
$i=0;$i<$dlina;$i++)
{
        
$text str_replace($r_trans$e_trans$text);
}

echo 
$text."<br>";
$dlina strlen($text);

for (
$i=0;$i<$dlina;$i++)
{
        
$text str_replace($e_trans$r_trans$text);
}

echo 
$text."<br>";
for (
$i=0;$i<$dlina;$i++)
{
        if (
$text[$i]== "ч" && $text[$i-1]== "с")
        {
                
$text[$i-1]= "щ";
                
$text[$i]= "";
        }
        if (
$text[$i]== "х" && $text[$i-1]== "с")
        {
                
$text[$i-1]= "ш";
                
$text[$i]= "";
        }
}

echo 
$text."<br>";
?>

то что на экране

Этот текст написан по-русски и еще писать. А ты куда идешь? //изначально
Эtot tekst napisan po-russki i es4e pisat'. А ti kuda idesh'? // транслит
Этот текст написан по-русски и есче писатъ. А ти куда идесхъ? //обратный транслит
Этот текст написан по-русски и еще писатъ. А ти куда идешъ? //немного исправленный транслит

"сложные" места выделил черным

я понимаю, что можно выбрать другие символы...но надо с этими

   
 
 автор: JC_Piligrim   (18.08.2005 в 16:13)   письмо автору
 
   для: P@Sol   (18.08.2005 в 15:59)
 

Без словаря или наборов правил будет практически невозможно это реализовать. Лучше всего, чтобы одной русской букве соответствовала одна латинская, а символ, скажем, "ч" заменялся на "4", символ "ш" на "6", "ж" на "j" и т.д... ИМХО... Но опять же, сделать так, чтобы комп правильно это переводил - очень затруднительно. На своем опыте знаю.

   
 
 автор: P@Sol   (18.08.2005 в 16:16)   письмо автору
 
   для: JC_Piligrim   (18.08.2005 в 16:13)
 

есть такая программ punto switcher, так у нее теже проблемы что и у меня...

Без словаря или наборов правил будет практически невозможно это реализовать.
будем писать:)

   
 
 автор: P@Sol   (18.08.2005 в 16:22)   письмо автору
 
   для: P@Sol   (18.08.2005 в 15:59)
 

а как можно выдрать из предложения слово?

   
 
 автор: Евгений Петров   (18.08.2005 в 16:26)   письмо автору
 
   для: P@Sol   (18.08.2005 в 16:22)
 

Т.е. проверить есть ли слово или нет или разбить весь текст на слова или вырезать одно какое то конкретное слово?

   
 
 автор: P@Sol   (18.08.2005 в 16:34)   письмо автору
 
   для: Евгений Петров   (18.08.2005 в 16:26)
 

я хотел так: находим "ъ", и надо выдрать слово в котором он содержится...т.е. допустим "ты съешь яблоко"...находим "ъ" и берем слово "съешь" и проверяем есть ли тыкое слово в словаре...
но это слишком для моего раздолбайства:) вообщем наверно все останется как есть....ведь понятно, что имелось ввиду (т.е. основную мысль поймать можно)?

(и в конце концов - это же было баловство, а не целый проект)

   
 
 автор: cheops   (18.08.2005 в 21:40)   письмо автору
 
   для: P@Sol   (18.08.2005 в 15:59)
 

Следует сначала заменить двубуквенные значения, а потом однобуквенные, т.е. расшифровывать в два этапа.

   
 
 автор: P@Sol   (19.08.2005 в 09:01)   письмо автору
 
   для: cheops   (18.08.2005 в 21:40)
 

спаисбо...хорошая идея....а как сделать с "ь" и "ъ" и с "е" и "э"? я ставлю везде ъ и делаю проверку..если знак последний то исправляю на ь...а с "э" и "е" пока не знаю

   
 
 автор: P@Sol   (19.08.2005 в 12:52)   письмо автору
 
   для: P@Sol   (18.08.2005 в 15:59)
 

можете потестировать то что у меня получилось?

   
 
 автор: P@Sol   (26.08.2005 в 09:33)   письмо автору
 
   для: P@Sol   (19.08.2005 в 12:52)
 

http://www.kardi.ru/test2/transliter/index.php - for test

Транслитерация с кирилических букв на латинские и обратно. Возможен выбор из трех правил: Мой, ГОСТ 16876-7 и Traveller's Yellow Pages Transliteration + ISO 9 - 1995 (для красоты пришлись скристить эти два правила).
В следующей версии:
1. автоматическое распознавание направления перевода
2. обработка руско-английских текстов, например: "Этот текст написан на <JavaScript>"
3. работа на ошибками;)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования