@long_skinny_boy

Как поместить в массив коды символов?

Добрый день, имеется задача транслитерации строки имеющая русские символов в латиницу

Использую простой код

function translit($value)
{
	$converter = array(
		'а' => 'a',    'б' => 'b',    'в' => 'v',    'г' => 'g',    'д' => 'd',
		'е' => 'e',    'ё' => 'e',    'ж' => 'zh',   'з' => 'z',    'и' => 'i',
		'й' => 'y',    'к' => 'k',    'л' => 'l',    'м' => 'm',    'н' => 'n',
		'о' => 'o',    'п' => 'p',    'р' => 'r',    'с' => 's',    'т' => 't',
		'у' => 'u',    'ф' => 'f',    'х' => 'h',    'ц' => 'c',    'ч' => 'ch',
		'ш' => 'sh',   'щ' => 'sch',  'ь' => '',     'ы' => 'y',    'ъ' => '',
		'э' => 'e',    'ю' => 'yu',   'я' => 'ya',
	);
 
	$value = strtr($value, $converter);
	return $value;
}


Однако есть такая необходимость чтобы код состоял только из латинских символов, другими словами
можно ли заменить в указанном массиве все русские символы на их идентификаторы, т.е. букву описать неким кодом символа и при этом функция strtr поняла это код за необходимый символ.
  • Вопрос задан
  • 95 просмотров
Решения вопроса 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Immortal_pony
@Immortal_pony Куратор тега PHP
function translit($value) {
    $converter = [
        '%D0%B0' => 'a',
        '%D0%B1' => 'b',
        '%D0%B2' => 'v',
        '%D0%B3' => 'g',
        '%D0%B4' => 'd',
        '%D0%B5' => 'e',
        '%D1%91' => 'e',
        '%D0%B6' => 'zh',
        '%D0%B7' => 'z',
        '%D0%B8' => 'i',
        '%D0%B9' => 'y',
        '%D0%BA' => 'k',
        '%D0%BB' => 'l',
        '%D0%BC' => 'm',
        '%D0%BD' => 'n',
        '%D0%BE' => 'o',
        '%D0%BF' => 'p',
        '%D1%80' => 'r',
        '%D1%81' => 's',
        '%D1%82' => 't',
        '%D1%83' => 'u',
        '%D1%84' => 'f',
        '%D1%85' => 'h',
        '%D1%86' => 'c',
        '%D1%87' => 'ch',
        '%D1%88' => 'sh',
        '%D1%89' => 'sch',
        '%D1%8C' => '',
        '%D1%8B' => 'y',
        '%D1%8A' => '',
        '%D1%8D' => 'e',
        '%D1%8E' => 'yu',
        '%D1%8F' => 'ya',
    ];
    
    $decodedKeys = array_map(function($encodedKey) { 
        return urldecode($encodedKey);
    }, array_keys($converter));
    $converter = array_combine($decodedKeys, array_values($converter));
    
    return strtr($value, $converter);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
02 мая 2024, в 23:29
1500 руб./в час
02 мая 2024, в 23:16
7500 руб./за проект
15 апр. 2024, в 22:14
30000 руб./за проект