Как сделать автоматическое шифрования кириллицы в латиницу?

Есть такой код
<?php
$gg = "текст тут";

function translate($string){

	$arr = array(

			//RUS
'А' => '20','Б' => '21','В' => '22','Г' => '23','Д' => '24','Е' => '25','Ё' => '26','Ж' => '27','З' => '28','И' => '29','Й' => '210','К' => '211','Л' => '212','М' => '213','Н' => '214','О' => '215','П' => '216','Р' => '217','С' => '218','Т' => '219','У' => '220','Ф' => '221','Х' => '222','Ц' => '223','Ч' => '224','Ш' => '225','Щ' => '226','Ъ' => '227','Ы' => '228','Ь' => '229','Э' => '230','Ю' => '231','Я' => '232',
'а' => '30','б' => '31','в' => '32','г' => '33','д' => '34','е' => '35','ё' => '36','ж' => '37','з' => '38','и' => '39','й' => '310','к' => '311','л' => '312','м' => '313','н' => '314','о' => '315','п' => '316','р' => '317','с' => '318','т' => '319','у' => '320','ф' => '321','х' => '322','ц' => '323','ч' => '324','ш' => '325','щ' => '326','ъ' => '327','ы' => '328','ь' => '329','э' => '330','ю' => '331','я' => '332'
                     //Другой язык 
				);

	$key = array_keys($arr);
	$val = array_map(function($a){ return "{".$a."}"; }, array_values($arr));
	$translate = str_replace($key, $val, $string);

	return $translate;
}

$m = preg_split('/[\W_]/u', $gg, -1, PREG_SPLIT_NO_EMPTY);

foreach ($m as $r){
	$y = fopen('id/'.translate($r).'.php', 'c+'); //id эта папка в которую загружаются файлы
	fwrite($y, $r);
	fclose($y);
}

Так вот нужно этот код заменить на автоматический, чтоб мне не заполнять символы в ручную.
Если есть идеи пишите
  • Вопрос задан
  • 3051 просмотр
Решения вопроса 1
smoked
@smoked
Можно попробовать вот такое извращение

function mb_str_split($string) {
    $length = mb_strlen($string, "utf-8");

    $i = 0;
    $arr = array();
    while ($i < $length) {
        $rep = mb_substr($string,$i,1,"utf-8");
        array_splice($arr, $i, 1, $rep);
        $i++;
    }

    return $arr;
}


function transcode($string) {
    $string = mb_str_split($string);
     
    $string = array_map(function($a) {
        $result = unpack('N', mb_convert_encoding($a, 'UCS-4BE', 'UTF-8'));

        if (is_array($result) === true) {
            return $result[1];
        }
    }, $string);

    return implode("", $string);  
}
        
$string = "аАБВГДЕЁЖЗ";
echo transcode($string);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы