Битрикс. Аналоги стандартных PHP-функций

03.10.2018

Теги: JSONPHPWeb-разработкаБитриксКонстантаФункция

В Битрикс есть много аналогов стандартных функций php, которые, на первый взгляд, могут показаться излишними. Но, как правило, ничего не делается без причины, и все такие функции имеют какие-то важные отличия. Многие из них сделаны для обеспечения совместимости между серверами с различными настройками, в т.ч. для обеспечения безотказной работы в разных кодировках. И, если на рядовом сайте бывает проще и надежнее использовать стандартные функции, то при написании модулей их использование часто может спасти от серьезных ошибок на конфигурациях, отличных от вашей тестовой.

Функция htmlspecialchars()

Аналоги в Битрикс:

\Bitrix\Main\Text\String::htmlEncode()
htmlspecialcharsbx()

Функция htmlspecialchars() предназначена для преобразования специальных символов (&, <, >, ") в HTML-сущности (&amp;, &lt;, &gt;, &quot;). После этого эти спец.символы можно использовать в 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 • Битрикс • Кодировка • Константа • Функция

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.