Сравнение строк, в которых присутствуют кириллические буквы, внешне неотличимые от латиницы

Есть $str1 = 'mAsha'; $str2 = 'mАsha'; Строки выглядят идентично, только вот в $str2 большая А написана кириллицей, а в $str1 все буквы латинские. Возникла необходимость в компараторе с функционалом человеческого глаза: если текст выглядит идентично, должно вернуться тру. Есть ли элегантное решение?


Ответы (1 шт):

Автор решения: HMRDevil

Воспользуйтесь конвертером букв. Что-то вроде такого:

function convert($string)
{
    // Ключи массива - русские буквы, значения - английские
    $converter = ['А' => 'A', 'а' => 'a', 'Е' => 'E', 'е' => 'e']; // и т.д и т.п.

    $convertedString = strtr($string, $converter);
    return $convertedString;
}


$var1 = "Swager"; // все буквы англ
$var2 = "Swаgеr"; // русские "а" и "е" 
if (strcmp(convert($var1), convert($var2)) == 0)
{
    echo '$var1 и $var2 равны';
}
→ Ссылка