В данном скрипте рассматривается возможность автоматизации замены диакретических букв (символов) в алфавите русского языка - на один или несколько "не диакретических".
Возможно это не самый подходящий способ решения вопроса диакретических символов.
Зачем:
А также просто так :)
@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) "ииог" | |
} |