romanitalian notes / Заменяем диакретические знаки на один или несколько не диакретических

В данном скрипте рассматривается возможность автоматизации замены диакретических букв (символов) в алфавите русского языка - на один или несколько "не диакретических".

Возможно это не самый подходящий способ решения вопроса диакретических символов.

Зачем:

А также просто так :)

@todo добавить возможность интеллектуальной обработки с учетом звучания

<?php
/**
* Заменяет диакретические знаки
* how to use:
* $translated = Diacritic::getInstance()->translate('ёлка');
*/
class Diacritic extends Singleton
{
public $dict;
protected function __construct(){
$this->init();
}
protected function init() {
$this->dict = [
'ё' => 'ио',
'Ё' => 'Ио',
'й' => 'ии',
'Й' => 'Ии',
];
}
public function translate($str) {
$out = str_replace(array_keys($this->dict), $this->dict, $str);
return $out;
}
}
class Singleton
{
protected static $instance;
public static function getInstance(){
if (null === static::$instance) {
static::$instance = new static();
}
return static::$instance;
}
protected function __construct(){}
private function __clone(){}
private function __wakeup(){}
}
$words = [
'актёр',
'бёдра',
'берёза',
'бурёнка',
'варёный',
'вёдро',
'всё',
'вёрткий',
'вёсны',
'вёсла',
'взлёт',
'влёт',
'вразлёт',
'подённый',
'подъём',
'позёмка',
'полёт',
'полётный',
'приём',
'приёмка',
'свёкор',
'сгущёнка',
'сгущёный',
'сёгун',
'сёдла',
'сёмга',
'съёмка',
'таёжный',
'телёнок',
'тёмный',
'трёхъярусный',
'трёхколёсный',
'трёхзвёздочный',
'утёс',
'шофёр',
'четвёртый',
'чёлка',
'чёрствый',
'чёрт',
'чёрточка',
'йота',
'йотация',
'йод',
'йогурт',
'йети',
'йеменцы',
'йельский',
'йог',
];
$out = [];
foreach($words as $w) {
$out[$w] = Diacritic::getInstance()->translate($w);
}
var_dump($out);
// результат работы:
array(48) {
["актёр"]=>
string(12) "актиор"
["бёдра"]=>
string(12) "биодра"
["берёза"]=>
string(14) "бериоза"
["бурёнка"]=>
string(16) "бурионка"
["варёный"]=>
string(18) "варионыии"
["вёдро"]=>
string(12) "виодро"
["всё"]=>
string(8) "всио"
["вёрткий"]=>
string(18) "виорткиии"
["вёсны"]=>
string(12) "виосны"
["вёсла"]=>
string(12) "виосла"
["взлёт"]=>
string(12) "взлиот"
["влёт"]=>
string(10) "влиот"
["вразлёт"]=>
string(16) "вразлиот"
["подённый"]=>
string(20) "подионныии"
["подъём"]=>
string(14) "подъиом"
["позёмка"]=>
string(16) "позиомка"
["полёт"]=>
string(12) "полиот"
["полётный"]=>
string(20) "полиотныии"
["приём"]=>
string(12) "прииом"
["приёмка"]=>
string(16) "прииомка"
["свёкор"]=>
string(14) "свиокор"
["сгущёнка"]=>
string(18) "сгущионка"
["сгущёный"]=>
string(20) "сгущионыии"
["сёгун"]=>
string(12) "сиогун"
["сёдла"]=>
string(12) "сиодла"
["сёмга"]=>
string(12) "сиомга"
["съёмка"]=>
string(14) "съиомка"
["таёжный"]=>
string(18) "таиожныии"
["телёнок"]=>
string(16) "телионок"
["тёмный"]=>
string(16) "тиомныии"
["трёхъярусный"]=>
string(28) "триохъярусныии"
["трёхколёсный"]=>
string(30) "триохколиосныии"
["трёхзвёздочный"]=>
string(34) "триохзвиоздочныии"
["утёс"]=>
string(10) "утиос"
["шофёр"]=>
string(12) "шофиор"
["четвёртый"]=>
string(22) "четвиортыии"
["чёлка"]=>
string(12) "чиолка"
["чёрствый"]=>
string(20) "чиорствыии"
["чёрт"]=>
string(10) "чиорт"
["чёрточка"]=>
string(18) "чиорточка"
["йота"]=>
string(10) "ииота"
["йотация"]=>
string(16) "ииотация"
["йод"]=>
string(8) "ииод"
["йогурт"]=>
string(14) "ииогурт"
["йети"]=>
string(10) "ииети"
["йеменцы"]=>
string(16) "ииеменцы"
["йельский"]=>
string(20) "ииельскиии"
["йог"]=>
string(8) "ииог"
}