Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Необходимо сделать конверт букв с русских на англи


Автор: viperson 7.4.2009, 15:14
Здравствуйте гуру!

Необходима помощь в решении вот какой задачи:

Есть текстовый файл с русскими фразами по одной фразе на строку. Необходимо написать скрипт, который позволит заменить на автомате все русские буквы на английские. Задаче заключается не в том, чтобы сделать перевод в латиницу, а в том чтобы сделать конверт букв согласно клавиатуре,

то есть

а = f
б = ,    и тд

  или

Солнце = Cjkywt

Надеюсь понятно мое изложение сути преобразования.  smile 

Буду очень благодарен за вашу  помощь.


Автор: enof 7.4.2009, 15:17
Код

str_replace(array("й", "ц", "у"), array("q", "w", "e"), $str);

Автор: viperson 7.4.2009, 15:20
Цитата(enof @ 7.4.2009,  15:17)
Код

str_replace(array("й", "ц", "у"), array("q", "w", "e"), $str);



то есть получается что мне нужно фактически добавить соответсвия всего что мне нужно и готово?

Но вопрос еще в другом.

Мне нужно сделать скрипт так, чтобы можно было указать файл из которого брать и в который ложить результат.

Автор: enof 7.4.2009, 15:23
viperson,  smile 

Автор: viperson 7.4.2009, 15:26
Я чуть подправил пост и нужно усовершенствование скрипта согласно моих нужд

Автор: Akonkagva1 7.4.2009, 15:29
Код

$handle = fopen("/tmp/inputfile.txt", "r");
$buffer = fgets($handle, 4096)
    str_replace(array("й", "ц", "у"), array("q", "w", "e"), $buffer);
}
fclose($handle);
$handle = fopen("/tmp/writefile.txt", "r");
fwrite($handle, $somecontent);

Автор: Primitive 7.4.2009, 15:47
viperson
С помошью функций fopen() fclose() fwrite() fgets()

Автор: enof 7.4.2009, 15:52
Почему не file_get(put)_contents(), если файл не большой?
Код

fgets($handle, 4096)

А если строка в файле занимает больше 4кб и данные, например, в utf8? smile 

Автор: viperson 7.4.2009, 17:09
Спасибо за подсказки, буду пробовать.

Автор: nerezus 7.4.2009, 17:23
viperson, это не подсказки. Тебе готовое решение дали уже.

Автор: viperson 7.4.2009, 17:40
Код

<?php
$handle = fopen("input.txt", "r");
$buffer = fgets($handle, 4096)
    str_replace(array("й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю", "ё"), array("q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "a", "s", "d", "f", "g", "j", "k", "l", ";", "'", "z", "x", "c", "v", "b", ",", ".", "/", "`"), $buffer);
}
fclose($handle);
$handle = fopen("output.txt", "r");
fwrite($handle, $somecontent);
?>


Выдает Parse error: syntax error, unexpected T_STRING in Z:\home\localhost\www\letcon\index.php on line 4

одскажите где ошибка? Использую Denwer 3

Автор: bars80080 7.4.2009, 17:53
Цитата(viperson @  7.4.2009,  17:40 Найти цитируемый пост)
Parse error: syntax error

синтаксическая ошибка, у тебя скобка лишняя/ или не поставлена

в данном случае добавь её сюда:

Код

$buffer = fgets($handle, 4096) {

Автор: viperson 7.4.2009, 17:56
Цитата(bars80080 @ 7.4.2009,  17:53)
Цитата(viperson @  7.4.2009,  17:40 Найти цитируемый пост)
Parse error: syntax error

синтаксическая ошибка, у тебя скобка лишняя/ или не поставлена

в данном случае добавь её сюда:

Код

$buffer = fgets($handle, 4096) {

После подстановки скобки выдает

Parse error: syntax error, unexpected '{' in Z:\home\localhost\www\letcon\index.php on line 3

Автор: bars80080 7.4.2009, 18:02
считай скобки, сколько открывающих столько должно быть и закрывающих. причём пересекаться они не могут: { ( } ) - нельзя

Автор: viperson 7.4.2009, 18:06
Цитата(bars80080 @ 7.4.2009,  18:02)
считай скобки, сколько открывающих столько должно быть и закрывающих. причём пересекаться они не могут: { ( } ) - нельзя

Можно по конкретному коду сказать где ошибка? Скобки вроде все правильные
Код

<?php
$handle = fopen("input.txt", "r");
$buffer = fgets($handle, 4096) 
    str_replace(array("й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю", "ё"), array("q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "z", "x", "c", "v", "b", "n", ",", ".", "/", "`"), $buffer);
}
fclose($handle);
$handle = fopen("output.txt", "r");
fwrite($handle, $somecontent);
?>

Автор: enof 7.4.2009, 18:50
Цитата(viperson @  7.4.2009,  19:06 Найти цитируемый пост)
Можно по конкретному коду сказать где ошибка? Скобки вроде все правильные

цикл где? http://php.net/fgets

Автор: viperson 7.4.2009, 19:04
Если бы я понимал в пхп. Меня девушка просто попросила помочь. Можно исправить все в коде что не правильно?

Автор: enof 7.4.2009, 19:20
Цитата(viperson @  7.4.2009,  20:04 Найти цитируемый пост)
Можно исправить все в коде что не правильно?

Отчего ж нельзя? Можно.
Код

$str = file_get_contents("filename"); // Читаем файл в переменную
$str = str_replace();//Заменяем буквы
file_put_contents("filename", $str); // Пишем переменную в файл.

Даже при полном незнании пхп, 20 мин в мане и готово.

Автор: bars80080 7.4.2009, 19:21
Код

<?php
$handle = fopen("input.txt", "r");
$somecontent = '';
$what = array("й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю", "ё");
$onwhat = array("q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "z", "x", "c", "v", "b", "n", ",", ".", "/", "`");
while(!feof($handle)) {
    $buffer = fgets($handle, 4096) 
    $somecontent .= str_replace($what, $onwhat, $buffer)."\r\n";
}
fclose($handle);
$handle = fopen("output.txt", "r");
fwrite($handle, $somecontent);
?>

Автор: viperson 7.4.2009, 19:44
Короче код не работает.

Автор: SneG0K 7.4.2009, 19:52
viperson, короче смени драйвер между стулом и клавиатурой!

Автор: viperson 7.4.2009, 19:58
Parse error: syntax error, unexpected T_VARIABLE in Z:\home\localhost\www\letcon\index2.php on line 8

такая вот ошибка в Denwer 3. Драйверсвой меняй,  у меня не требует драйверов. smile 

Автор: SneG0K 7.4.2009, 20:01
viperson, о_0 так ты без драйверов?! Ну тогда все плохо!!!

Цитата(viperson @  7.4.2009,  18:58 Найти цитируемый пост)
Parse error: syntax error, unexpected T_VARIABLE in Z:\home\localhost\www\letcon\index2.php on line 8

Тебя носом ткнуло в место где ошибка!

Автор: viperson 7.4.2009, 20:03
Я написал что не шарю ты можешь код выложить? я вижу где строка 8 не знаю что менять.

Автор: NLspieler 7.4.2009, 20:40
Попробуй так, может заработает.

Код

<?php
$handle = fopen("input.txt", "r");
$somecontent = '';
$what = array("й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю", "ё");
$onwhat = array("q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "z", "x", "c", "v", "b", "n", ",", ".", "/", "`");
while(!feof($handle)) {
    $buffer = fgets($handle, 4096) ;
    $somecontent .= str_replace($what, $onwhat, $buffer)."\r\n";
}
fclose($handle);
$handle = fopen("output.txt", "r");
fwrite($handle, $somecontent);
?>

Автор: skyboy 7.4.2009, 21:27
в седьмой строке у bars80080 пропущена точка с запятой.

Автор: bars80080 7.4.2009, 23:25
а-а-а-а, о_0, я оказался не способен....


...



где стена?

Автор: skyboy 7.4.2009, 23:37
не способен на что? написать абсолютно верный код без единой опечатки, не пользуясь подсказками анализатора? smile

Автор: bars80080 7.4.2009, 23:48
Цитата(skyboy @  7.4.2009,  23:37 Найти цитируемый пост)
написать абсолютно верный код без единой опечатки, не пользуясь подсказками анализатора? 

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


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)