Давайте поговорим о данной функции, а так же о причине её появления в системе битрикс. В PHP существует встроенная функция htmlspecialchars которая предназначена для преобразования спец символов в так называемые html-сущности. Дело в том, что с выходом PHP версии 5.4 кое-что в данной функции изменилось, а именно — значение третьего параметра по умолчанию. Основная задача этого параметра это указание кодировки передаваемой функции строки. Теперь значением третьего параметра по умолчанию стала кодировка UTF-8.
Ничего плохого про кодировку UTF-8 не скажу, так же как и про функцию htmlspecialchars, т.к. если поменяли кодировку по умолчанию, значит так было нужно. Однако для системы битрикс это не пошло на руку по той причине, что если передавать строку с нелатинскими символами в иной кодировке, не передавая параметр кодировки, то функция возвращала пустую строку. Как вы можете представить, проблема ощутимая, т.к. в системе данная функция используется довольно часто.
Решение данной проблемы разработчики увидели в добавлении новой функции под названием htmlspecialcharsbx в главный модуль начиная с версии 11.5.9, таким образом, уже с 12-й версии битрикса заменен вызов стандартной функции htmlspecialchars.
По сути, функция, выполняющая роль альтернативной замены в битриксе работает на основе старой функции:
function htmlspecialcharsbx($string, $flags=ENT_COMPAT){ return htmlspecialchars($string, $flags, (defined("BX_UTF")? "UTF-8" : "ISO-8859-1")); }
Таким образом, если константа BX_UTF была определена перед обращением к функции, то будет использоваться кодировка UTF-8 в ином случае ISO-8859-1.
Функция htmlspecialcharsbx описывается в файле:
/bitrix/modules/main/classes/general/update_log.php
Спасибо, прочитал!