Если я правильно понял, то может помочь трюк с двойной заменой
Сперва с учётом регистра, потом без учёта.
$result = str_replace($from, $to, $text);
$result = str_ireplace($from, $to, $result);
Вообще судя по описанию автор решает задачу замены символов с диакритическими знаками на аналоги без.
Если так то попробуйте этот скрипт
https://github.com/infralabs/DiacriticsRemovePHP
Ещё вариант использовать iconv() с флагом //TRANSLIT
$result = iconv('UTF-8', 'US-ASCII//TRANSLIT', $text);