Last active
January 30, 2016 17:31
-
-
Save romanitalian/3b0323b4a77589a5d8bf to your computer and use it in GitHub Desktop.
Заменяет диакретические знаки на один или несколько не диакретических
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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) "ииог" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment