я тут внезапно обнаружил, что php из коробки оказывается умеет транслитерацию умную
public static function translit($text, $reverse = false)
{
return Transliterator::create($reverse ? 'Latin-Russian/BGN' : 'Russian-Latin/BGN')->transliterate($text);
}
$str = 'Мама? мыла рамочку!!!';
$str_tr = 'Mama? myla ramochku!!!';
dd([
Helpers::translit($str),
Helpers::translit($str, true),
Helpers::translit($str_tr),
Helpers::translit($str_tr, true),
]);
array:4 [
0 => "Mama? myla ramochku!!!"
1 => "Мама? мыла рамочку!!!"
2 => "Mama? myla ramochku!!!"
3 => "Мама? мыла рамочку!!!"
]