Задание к 12 уроку php. Функция замены строк.

Автор: | 14.09.2015

Задание:

Написать функцию kirToLat($str) для замены входящего текста из кириллицы на транслит, используя готовый массив алфавита:

[spoiler title=»Готовый массив»]

$abc = ["А"=>"A", "а"=>"а", "Б"=>"B", "б"=>"b", "В"=>"V", "в"=>"v", "Г"=>"G", "г"=>"g", "Д"=>"D", "д"=>"d", "Е"=>"E", "е"=>"e", "Ё"=>"YO", "ё"=>"yo", "Ж"=>"J", "ж"=>"j", "З"=>"Z", "з"=>"z", "И"=>"i", "и"=>"i", "Й"=>"Y", "й"=>"y", "К"=>"K", "к"=>"k", "Л"=>"L", "л"=>"l", "М"=>"M", "м"=>"m", "Н"=>"N", "н"=>"n", "О"=>"O", "о"=>"o", "П"=>"P", "п"=>"p", "Р"=>"R", "р"=>"r", "С"=>"S", "с"=>"s", "Т"=>"T", "т"=>"t", "У"=>"U", "у"=>"u", "Ф"=>"F", "ф"=>"f", "Х"=>"H", "х"=>"h", "Ц"=>"C", "ц"=>"c", "Ч"=>"CH", "ч"=>"ch", "Ш"=>"SH", "ш"=>"sh", "Щ"=>"ScH", "щ"=>"sch", "Ъ"=>"'", "ъ"=>"'", "Ы"=>"I", "ы"=>"i", "Ь"=>"'", "ь"=>"'", "Э"=>"E'", "э"=>"e'", "Ю"=>"YU", "ю"=>"yu", "Я"=>"YA", "я"=>"ya",];

[/spoiler]

Обязательные условия:

  1. Заменить символы используя цикл foreachУрок 10. Использование цикла foreach
  2. Функция должна возвращать полученную строку в транслите с помощью return. Урок 11. Написание своих функций
  3. <?
    if(isset($_POST['str'])) {
      echo "<p><b>Первоначальная строка: </b>".trim($_POST['str'])."</p>";
      echo "<p><b>Полученная строка транслитом: </b>".kirToLat(trim($_POST['str']))."</p>";
    }
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Перевод кирилицы в латиницу</title>
    </head>
    <body>
      <form action="" method="post">
        <input type="text" name="str" placeholder="Введите текст для перевода в кирилицу">
        <input type="submit" value="Перевести">
      </form>
    </body>
    </html>

Результат выполнения функции:

урок 12 результат выполнения

[spoiler title=»Решение»]

<?
function kirToLat($str) {
  $abc = ["А"=>"A",	"а"=>"а", "Б"=>"B", "б"=>"b", "В"=>"V", "в"=>"v", "Г"=>"G", "г"=>"g", "Д"=>"D", "д"=>"d", "Е"=>"E", "е"=>"e", "Ё"=>"YO", "ё"=>"yo", "Ж"=>"J", "ж"=>"j", "З"=>"Z", "з"=>"z", "И"=>"i", "и"=>"i", "Й"=>"Y", "й"=>"y", "К"=>"K", "к"=>"k", "Л"=>"L", "л"=>"l", "М"=>"M", "м"=>"m", "Н"=>"N", "н"=>"n", "О"=>"O", "о"=>"o", "П"=>"P", "п"=>"p", "Р"=>"R", "р"=>"r", "С"=>"S", "с"=>"s", "Т"=>"T", "т"=>"t", "У"=>"U", "у"=>"u", "Ф"=>"F", "ф"=>"f", "Х"=>"H", "х"=>"h", "Ц"=>"C", "ц"=>"c", "Ч"=>"CH", "ч"=>"ch", "Ш"=>"SH", "ш"=>"sh", "Щ"=>"ScH", "щ"=>"sch", "Ъ"=>"'", "ъ"=>"'", "Ы"=>"I", "ы"=>"i", "Ь"=>"'", "ь"=>"'", "Э"=>"E'", "э"=>"e'", "Ю"=>"YU", "ю"=>"yu", "Я"=>"YA", "я"=>"ya",];
  if(!$str or $str == "") {return false;} else {
    foreach ($abc as $rep_char => $char) {
      $str = str_replace($rep_char, $char, $str);
    }
    return $str;
  }
}
if(isset($_POST['str'])) {
  echo "<p><b>Первоначальная строка: </b>".trim($_POST['str'])."</p>";
  echo "<p><b>Полученная строка транслитом: </b>".kirToLat(trim($_POST['str']))."</p>";
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Перевод кирилицы в латиницу</title>
</head>
<body>
  <form action="" method="post">
    <input type="text" name="str" placeholder="Введите текст для перевода в кирилицу">
    <input type="submit" value="Перевести">
  </form>
</body>
</html>

[/spoiler]