Проблемы с конвертацией регистра строк в Битриксе и соответственно в php
В php есть две команды, которые меняют регистр строк: strtoupper и strtolower.
В Битриксе есть две альтернативные команды: ToUpper и ToLower соответственно.
Битрикс в хелпе прямо пишет:
Данную функцию можно использовать в случае если возникают проблемы с преобразованием кириллических символов стандартной PHP функцией strtolower. Иногда это происходит на некоторых хостингах.
В принципе, я эти две функции рассматривал как черный ящик, до тех пор, пока не столкнулся с проблемой изменения регистра на одном хостинге. Т.е. ни strtoupper, ни ToUpper переводить строку в верхний регист не хочет. И очень странно - зачем вводить новую функцию, которая не работает?
Проблема известна и путь решения тоже – необходимо установить правильную локаль.
Камень в огород Битрикса:
Ребята попытались решить проблему с iconv (функция ConvertCharset пытается использовать две библиотеки iconv и libiconv), а вот с преобразованием регистра не подумали…
Но ребята предусмотрели удобный механизм решения проблемы:
в функциях ToUpper и ToLower используется две константы: BX_CUSTOM_TO_UPPER_FUNC и BX_CUSTOM_TO_LOWER_FUNC. Передав в их значения имена функций своих обработчиков, можно использовать свои функции.
