- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/textparser.php
- Класс: CTextParser
- Вызов: CTextParser::initSmilePatterns
protected function initSmilePatterns()
{
$this->smilePatterns = [];
$this->smileReplaces = [];
$pre = '';
foreach ($this->smiles as $row)
{
if (preg_match("/\w$/", $row['TYPING']))
{
$pre .= '|' . preg_quote($row['TYPING'], '/');
}
}
foreach ($this->smiles as $row)
{
if ($row['TYPING'] != '' && $row['IMAGE'] != '')
{
$code = str_replace(["'", "<", ">"], ["\'", "<", ">"], $row["TYPING"]);
$patt = preg_quote($code, "/");
$code = preg_quote(str_replace(["x5C"], ["\"], $code));
$image = preg_quote(str_replace("'", "\'", $row["IMAGE"]));
$description = preg_quote(htmlspecialcharsbx(str_replace(["x5C"], ["\"], $row["DESCRIPTION"]), ENT_QUOTES), "/");
$patternName = 'pattern' . count($this->smilePatterns);
$this->smilePatterns[] = "/(?<=^|\>|[" . $this->wordSeparator . "\&]" . $pre . ")(?P<" . $patternName . ">$patt)(?=$|\<|[" . $this->wordSeparator . "\&])/s" . BX_UTF_PCRE_MODIFIER;
$this->smileReplaces[$patternName] = [
'code' => $code,
'image' => $image,
'description' => $description,
'width' => intval($row['IMAGE_WIDTH']),
'height' => intval($row['IMAGE_HEIGHT']),
'descriptionDecode' => $row['DESCRIPTION_DECODE'] == 'Y',
'imageDefinition' => $row['IMAGE_DEFINITION'] ?: CSmile::IMAGE_SD
];
}
}
usort($this->smilePatterns, function($a, $b) { return (mb_strlen($a) > mb_strlen($b) ? -1 : 1); });
}