Выбор ответа Senior Строки обновлено
Сравнение строк в UTF-8 без учёта регистра
Вопрос
Нужно сравнить "ПРИВЕТ" и "привет" без учёта регистра. Что сработает в PHP 8.3 без расширения intl?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: mbstrtolower($a) === mbstrtolower($b). strcasecmp и strtolower работают с байтами по ASCII: с PHP 8.2 они вообще не зависят от локали и не трогают кириллицу.
Варианты ответа
strcasecmp($a, $b) === 0mb_strtolower($a) === mb_strtolower($b)правильный ответstrtolower($a) === strtolower($b)$a == $b
Разбор
strcasecmp и strtolower работают с байтами по ASCII: с PHP 8.2 они вообще не зависят от локали и не трогают кириллицу. Корректно только mb_strtolower (или mb_convert_case с MB_CASE_FOLD). Нестрогое == сравнит строки побайтово с учётом регистра.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.