12 static $aSearch = [
"\\",
"\"",
"'"];
13 static $aReplace = [
"\\\\",
'\\"',
"\\'"];
14 return str_replace($aSearch, $aReplace, $s);
19 preg_match_all(
"#<([a-z0-9]+)([^>]*)(?<!/)>#iu", $html,
$result);
22 preg_match_all(
"#</([a-z0-9]+)>#iu", $html,
$result);
24 $len_opened =
count($openedtags);
26 if (
count($closedtags) == $len_opened)
31 $openedtags = array_reverse($openedtags);
33 for (
$i = 0;
$i < $len_opened;
$i++)
35 if (!in_array($openedtags[
$i], $closedtags))
37 $html .=
'</' . $openedtags[
$i] .
'>';
41 unset($closedtags[array_search($openedtags[
$i], $closedtags)]);
50 static $aSearch = [
"\xe2\x80\xa9",
"\\",
"'",
"\"",
"\r\n",
"\r",
"\n",
"\xe2\x80\xa8",
"*/",
"</"];
51 static $aReplace = [
" ",
"\\\\",
"\\'",
'\\"',
"\n",
"\n",
"\\n",
"\\n",
"*\\/",
"<\\/"];
52 $val = str_replace($aSearch, $aReplace, $s);
58 static $aSearch = [
"%27",
"%5C",
"%0A",
"%0D",
"%",
"'",
"'",
"'",
"'"];
59 static $aReplace = [
"\\'",
"\\\\",
"\\n",
"\\r",
"%25",
"\\'",
"\\'",
"\\'",
"\\'"];
60 return str_replace($aSearch, $aReplace, $s);
66 public static function PhpToJSObject($arData, $bWS =
false, $bSkipTilda =
false, $bExtType =
false)
68 static $use_bx_encode =
null;
69 if (!isset($use_bx_encode))
71 $use_bx_encode = function_exists(
'bx_js_encode');
75 return bx_js_encode($arData, $bWS, $bSkipTilda, $bExtType);
78 switch (gettype($arData))
81 if (preg_match(
"#['\"\\n\\r<\\\\\x80]#", $arData))
85 return "'" . $arData .
"'";
90 foreach ($arData as $j => $temp)
103 foreach ($arData as $value)
114 switch (gettype($value))
117 if (preg_match(
"#['\"\\n\\r<\\\\\x80]#", $value))
123 $res .=
"'" . $value .
"'";
146 $res .=
"'" . $value .
"'";
152 $res .= is_finite($value) ? $value :
"Infinity";
156 $res .=
"'" . $value .
"'";
160 if (preg_match(
"#['\"\\n\\r<\\\\\x80]#", (
string)$value))
166 $res .=
"'" . $value .
"'";
175 $sWS =
',' . ($bWS ?
"\n" :
'');
176 $res = ($bWS ?
"\n" :
'') .
'{';
178 foreach ($arData as
$key => $value)
180 if ($bSkipTilda && str_starts_with(
$key,
'~'))
194 if (preg_match(
"#['\"\\n\\r<\\\\\x80]#",
$key))
203 switch (gettype($value))
206 if (preg_match(
"#['\"\\n\\r<\\\\\x80]#", $value))
212 $res .=
"'" . $value .
"'";
235 $res .=
"'" . $value .
"'";
241 $res .= is_finite($value) ? $value :
"Infinity";
245 $res .=
"'" . $value .
"'";
249 if (preg_match(
"#['\"\\n\\r<\\\\\x80]#", (
string)$value))
255 $res .=
"'" . $value .
"'";
260 $res .= ($bWS ?
"\n" :
'') .
'}';
264 if ($arData ===
true)
275 return "'" . $arData .
"'";
280 return is_finite($arData) ? $arData :
"Infinity";
282 return "'" . $arData .
"'";
285 if (preg_match(
"#['\"\\n\\r<\\\\\x80]#", (
string)$arData))
289 return "'" . $arData .
"'";
296 $parse = $bSkipNative;
316 trigger_error(
"CUtil::JsObjectToPhp() is deprecated. Probably, data is enclosed in single-quotes. Change it to double-quotes.", E_USER_WARNING);
319 $data = preg_replace(
'/[\s]*([{}\[\]\"])[\s]*/',
'\1',
$data);
322 if (str_starts_with(
$data,
'{'))
329 $bStringStarted =
false;
332 $string_delimiter =
'';
333 for (
$i = 1, $len = mb_strlen(
$data);
$i < $len;
$i++)
335 $cur_symbol = mb_substr(
$data,
$i, 1);
336 if ($cur_symbol ==
'"' || $cur_symbol ==
"'")
339 $prev_symbol !=
'\\' && (
340 !$string_delimiter || $string_delimiter == $cur_symbol
344 if ($bStringStarted = !$bStringStarted)
346 $string_delimiter = $cur_symbol;
350 $string_delimiter =
'';
355 elseif ($cur_symbol ==
'{' || $cur_symbol ==
'[')
359 elseif ($cur_symbol ==
']')
363 elseif ($cur_symbol ==
'}')
375 elseif ($cur_symbol ==
',' && $depth == 0 && !$bStringStarted)
379 $prev_symbol = $cur_symbol;
387 $token = mb_substr(
$data, 1, $end_pos - 1);
390 if (!empty($arCommaPos))
393 foreach ($arCommaPos as $pos)
395 $arTokens[] = mb_substr($token, $prev_index, $pos - $prev_index - 1);
398 $arTokens[] = mb_substr($token, $prev_index);
402 $arTokens[] = $token;
405 foreach ($arTokens as $token)
407 $arTokenData = explode(
":", $token, 2);
409 $q = mb_substr($arTokenData[0], 0, 1);
412 $arTokenData[0] = mb_substr($arTokenData[0], 1, -1);
424 $bStringStarted =
false;
426 $string_delimiter =
"";
428 for (
$i = 1, $len = mb_strlen(
$data);
$i < $len;
$i++)
430 $cur_symbol = mb_substr(
$data,
$i, 1);
431 if ($cur_symbol ==
'"' || $cur_symbol ==
"'")
434 $prev_symbol !=
'\\' && (
435 !$string_delimiter || $string_delimiter == $cur_symbol
439 if ($bStringStarted = !$bStringStarted)
441 $string_delimiter = $cur_symbol;
445 $string_delimiter =
'';
449 elseif ($cur_symbol ==
'{' || $cur_symbol ==
'[')
453 elseif ($cur_symbol ==
'}')
457 elseif ($cur_symbol ==
']')
469 elseif ($cur_symbol ==
',' && $depth == 0 && !$bStringStarted)
473 $prev_symbol = $cur_symbol;
481 $token = mb_substr(
$data, 1, $end_pos - 1);
483 if (!empty($arCommaPos))
486 foreach ($arCommaPos as $pos)
512 $q = mb_substr(
$data, 0, 1);
513 if ($q ==
'"' || $q ==
"'")
519 if (str_contains(
$data,
'\u'))
521 $data = preg_replace_callback(
"/\\\u([0-9A-F]{2})([0-9A-F]{2})/i", [
'CUtil',
'DecodeUtf16'],
$data);
533 $res = chr(hexdec(
$ch[2])) . chr(hexdec(
$ch[1]));
534 return Encoding::convertEncoding(
$res,
'UTF-16',
'UTF-8');
556 return Encoding::detectUtf8($string);
564 return Encoding::convertToUtf($string);
569 $filePath =
$_SERVER[
'DOCUMENT_ROOT'] . $file;
570 if ($bSkipCheck || file_exists($filePath))
572 return $file .
'?' . filemtime($filePath) . filesize($filePath);
581 public static function InitJSCore($arExt = [], $bReturn =
false)
591 return CUserOptions::GetOption(
592 'BX.WindowManager.9.5',
593 'size_' . $resize_id,
595 'width' => $arDefaults[
'width'] ??
null,
596 'height' => $arDefaults[
'height'] ??
null,
608 return CUserOptions::GetOption(
609 'BX.WindowManager.9.5',
621 CUserOptions::SetOption(
622 'BX.WindowManager.9.5',
623 'options_' . $wnd_id,
633 if (!isset($search[
$lang]))
635 $mess = Loc::loadLanguageFile(
$_SERVER[
"DOCUMENT_ROOT"] .
"/bitrix/modules/main/js_core_translit.php",
$lang,
false);
636 $transFrom = explode(
",", $mess[
"TRANS_FROM"]);
637 $transto = explode(
",", $mess[
"TRANS_TO"]);
638 $search[
$lang] = array_combine($transFrom, $transto);
643 "change_case" =>
'L',
644 "replace_space" =>
'_',
645 "replace_other" =>
'_',
646 "delete_repeat_replace" =>
true,
649 foreach ($defaultParams as
$key => $value)
657 $chars = mb_str_split(
$str);
658 $len =
count($chars);
662 for (
$i = 0;
$i < $len;
$i++)
666 if (preg_match(
"/[a-zA-Z0-9]/", $chr) || (
$params[
"safe_chars"] !=
'' && mb_strpos(
$params[
"safe_chars"], $chr) !==
false))
670 elseif (preg_match(
"/\\s/u", $chr))
673 !
$params[
"delete_repeat_replace"]
675 (
$i > 0 && $lastChrNew !=
$params[
"replace_space"])
678 $chrNew =
$params[
"replace_space"];
687 if (isset($search[
$lang][$chr]))
689 $chrNew = $search[
$lang][$chr];
694 !
$params[
"delete_repeat_replace"]
696 (
$i > 0 &&
$i != $len - 1 && $lastChrNew !=
$params[
"replace_other"])
699 $chrNew =
$params[
"replace_other"];
711 $lastChrNew = $chrNew;
714 if (mb_strlen($strNew) >=
$params[
"max_len"])
720 if (
$params[
"change_case"] ==
"L" ||
$params[
"change_case"] ==
"l")
722 $strNew = mb_strtolower($strNew);
726 $strNew = mb_strtoupper($strNew);
741 return Config\Ini::unformatInt((
string)
$str);
748 if (!isset($list[$wizard]))
761 foreach (
$res as $item)
765 $list[$wizard][] = $item;
772 return $list[$wizard];
if(isset( $_REQUEST["mode"]) &&$_REQUEST["mode"]=="ajax") if(isset($_REQUEST["mode"]) && $_REQUEST["mode"]=="save_lru" &&check_bitrix_sessid()) $first
static get($moduleId, $name, $default="", $siteId=false)
static isModuleInstalled($moduleName)
static getList(array $parameters=array())
static getByPrimary($primary, array $parameters=array())
static Init($arExt=array(), $bReturn=false)
static InitJSCore($arExt=[], $bReturn=false)
static translit($str, $lang, $params=[])
static DetectUTF8($string)
static decodeURIComponent()
static ConvertToLangCharset($string)
static GetPopupSize($resize_id, $arDefaults=[])
static JsObjectToPhp($data, $bSkipNative=false)
static GetAdditionalFileURL($file, $bSkipCheck=false)
static getSitesByWizard($wizard)
static GetPopupOptions($wnd_id)
static SetPopupOptions($wnd_id, $arOptions)
static PhpToJSObject($arData, $bWS=false, $bSkipTilda=false, $bExtType=false)
$_SERVER["DOCUMENT_ROOT"]
if(!defined('SITE_ID')) $lang
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']