Как написать свою функцию транслитерации на php?

Есть задание: Объявите массив, индексами которого являются буквы русского языка, а
значениями – соответствующие латинские буквосочетания (‘а’=> ’a’, ‘б’ => ‘b’, ‘в’
=> ‘v’, ‘г’ => ‘g’, …, ‘э’ => ‘e’, ‘ю’ => ‘yu’, ‘я’ => ‘ya’).
Напишите функцию транслитерации строк.
Вот мой код:
<?php
function transLit($text){
$alfavit = array('а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'ye', 'ё'=>'yo', 'ж'=>'zh', 'з'=>'z', 'и'=>'i', 'к'=>'k', 'л'=>'l','м'=>'m', 'н'=>'n','о'=>'o', 'п'=>'p','р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u','ф'=>'f','х'=>'kh', 'ц'=>'ts', 'ч'=>'ch', 'ш'=>'sh','щ'=>'tch', 'ъ'=>'"', 'ы'=>'y', 'ь'=>'`', 'э'=>'eh', 'ю'=>'yu', 'я'=>'ya');
foreach ($alfavit as $key => $value) {
for ($i = 0; $i < strlen($text); $i++) {
if (mb_substr($text, $i, 1, "UTF-8") == $key) {
$text["$i"] = $value;
}
}
}
return $text;
}
echo transLit($text);
?>
выводит всякие иероглифы
пытался разбираться с функциями кодировок, все напрасно
Помогите(
  • Вопрос задан
  • 1445 просмотров
Решения вопроса 1
ewgenio
@ewgenio
Всё по чуть чуть
Ну раз нужен велосипед . То я другим путем это вижу вообще:
<?php

function transLit($text){
$alfavit = array('а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'ye', 'ё'=>'yo', 'ж'=>'zh', 'з'=>'z', 'и'=>'i', 'к'=>'k', 'л'=>'l','м'=>'m', 'н'=>'n','о'=>'o', 'п'=>'p','р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u','ф'=>'f','х'=>'kh', 'ц'=>'ts', 'ч'=>'ch', 'ш'=>'sh','щ'=>'tch', 'ъ'=>'"', 'ы'=>'y', 'ь'=>'`', 'э'=>'eh', 'ю'=>'yu', 'я'=>'ya');
$text_a = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
$text = '';
foreach($text_a as $val) {
    $text .= (isset($alfavit[$val])) ? $alfavit[$val] : $val; 
}
return $text;
}
$text = "Привет мир! Как дела?";
echo transLit($text);
?>


Вывод:
Пrivyet mir! Кak dyela?

UPD:
Не забудьте про регистр букв, это уже вам задачка )
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
lxfr
@lxfr
Сам файл в какой кодировке, я имею ввиду скрипт? Уж не в блокноте ли в Windows вы его пишите.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы