Разница между функциями strtolower и mbstrtolower при работе с многобайтовыми кодировками заключается в том, что strtolower не работает с многобайтовыми строками, для них нужно использовать функцию mbstrtolower. 5
mb_strtolower приводит все символы в многобайтовой строке к нижнему регистру. 5 У неё есть необязательный второй параметр — символьная кодировка. 25 Если он опущен, используется внутренняя кодировка символов. 5
В отличие от strtolower, mb_strtolower определяет, какие символы являются алфавитными, по свойствам Unicode. 3 Поэтому на её поведение не влияют настройки локали, и она может преобразовать любые символы с свойством «алфавитный», например, A-умлаут (Ä). 3