Битрикс. Аналоги стандартных PHP-функций
В Битрикс есть много аналогов стандартных функций php, которые, на первый взгляд, могут показаться излишними. Но, как правило, ничего не делается без причины, и все такие функции имеют какие-то важные отличия. Многие из них сделаны для обеспечения совместимости между серверами с различными настройками, в т.ч. для обеспечения безотказной работы в разных кодировках. И, если на рядовом сайте бывает проще и надежнее использовать стандартные функции, то при написании модулей их использование часто может спасти от серьезных ошибок на конфигурациях, отличных от вашей тестовой.
Функция htmlspecialchars()
Аналоги в Битрикс:
\Bitrix\Main\Text\String::htmlEncode()
htmlspecialcharsbx()
Функция htmlspecialchars()
предназначена для преобразования специальных символов (&
, <
, >
, "
) в HTML-сущности (&
, <
, >
, "
). После этого эти спец.символы можно использовать в HTML-коде, они больше не будут иметь особого значения. С выходом PHP версии 5.4 изменилось значение по умолчанию третьего параметра. Дефолтным значением стала кодировка UTF-8.
Для Битрикс это стало проблемой по той причине, что если передавать строку с нелатинскими символами в иной кодировке, не передавая параметр кодировки, то функция возвращала пустую строку. Проблема ощутимая, т.к. в системе данная функция используется довольно часто. Поэтому была добавлена новая функция htmlspecialcharsbx()
в главный модуль начиная с версии 11.5.9. Новая функция работает на основе все той же htmlspecialchars()
:
function htmlspecialcharsbx($string, $flags = ENT_COMPAT){ return htmlspecialchars($string, $flags, (defined("BX_UTF") ? "UTF-8" : "ISO-8859-1")); }
class String { public static function htmlEncode($string, $flags = ENT_COMPAT) { return htmlspecialchars($string, $flags, (defined("BX_UTF") ? "UTF-8" : "ISO-8859-1")); } }
Таким образом, если константа BX_UTF
была определена перед обращением к функции, то будет использоваться кодировка UTF-8, в противном случае — ISO-8859-1.
Функции json_encode() и json_decode()
Аналоги в Битрикс:
\Bitrix\Main\Web\Json::encode()
\Bitrix\Main\Web\Json::decode()
Функции json_encode()
и json_decode()
пребразуют массив PHP в строку json-формата и обратно, работают только с кодировкой UTF-8. Заставить их работать с кодировкой windows-1251 — не самая легкая задача. Методы Json::encode()
и Json::decode()
решают данную проблему. А т.к. сейчас большинство сайтов работают на технологии AJAX, при написании модулей они позволят отказаться от изобретения велосипеда.
Функции strtoupper() и strtolower()
Аналоги в Битрикс:
ToUpper()
ToLower()
Функции strtoupper()
и strtolower()
преобразуют строку к верхнему или нижнему регистру соответственно, но не работают с русским текстом в кодировке UTF-8. А функции Битрикс ToUpper()
и ToLower()
— работают.
Поиск: BX_UTF • JSON • Json::decode • Json::encode • PHP • String::htmlEncode • ToLower • ToUpper • Web-разработка • htmlspecialcharsbx • Битрикс • Кодировка • Константа • Функция