Работа с текстом — неотъемлемая часть создания контента, особенно когда речь идёт о публикации материалов в рамках CMS 1С-Битрикс. Нередко возникает необходимость преобразовывать обычный текст в корректный HTML-код, а иногда, наоборот, «очищать» HTML и превращать его в читабельный текст. Для решения этих задач в «1С-Битрикс: Управление сайтом» предусмотрены специальные функции — TxtToHTML и HTMLToTxt.

В данной статье мы подробно рассмотрим назначение этих функций, их параметры и разберём реальные кейсы, где подобные инструменты оказываются крайне полезны.
1. Функция TxtToHTML
Функция TxtToHTML позволяет превратить обычный текст (в том числе с особыми тегами, ссылками и т. п.) в корректный HTML-код с учётом базового форматирования. Это может пригодиться, когда вы принимаете текст от пользователей и хотите адаптировать его для веб-страницы — например, в комментариях к статьям, на форумах, в отзывам к товарам и т. д.
Сигнатура функции:
string TxtToHTML(
string text,
bool make_url = true,
int max_string = 0,
string quote_tag_enabled = "N",
string not_convert_amp = "Y",
string code_tag_enabled = "N",
string biu_tags_enabled = "N",
string quote_table_class = "quotetable",
string quote_head_class = "tdquotehead",
string quote_body_class = "tdquote",
string code_table_class = "codetable",
string code_head_class = "tdcodehead",
string code_body_class = "tdcodebody",
string code_textarea_class = "codetextarea",
string link_class = "txttohtmllink",
array event = array()
);
Описание основных параметров:
- text — входной текст, который мы хотим конвертировать в HTML.
- make_url (по умолчанию
true
) — автоматическое преобразование URL и email-адресов в кликабельные ссылки. - max_string (по умолчанию
0
) — максимальная длина слова. Все слова длиннее этого значения будут автоматически «разбиваться» на части через пробел. - quote_tag_enabled (по умолчанию
"N"
) — преобразовывать ли спец. тег<QUOTE>...</QUOTE>
в стилевую HTML-таблицу. - code_tag_enabled (по умолчанию
"N"
) — аналогично предыдущему пункту, но для тега<CODE>...</CODE>
. - biu_tags_enabled (по умолчанию
"N"
) — преобразовывать ли теги<b>
,<i>
,<u>
в соответствующие HTML-теги. - not_convert_amp (по умолчанию
"Y"
) — если значение"Y"
, символ&
не будет конвертироваться в&
. - quote_table_class, quote_head_class, quote_body_class, code_table_class, code_head_class, code_body_class, code_textarea_class, link_class — различные CSS-классы для оформления таблиц, ячеек, текстовых областей, ссылок и т. п.
- event — массив для указания событий, которые нужно фиксировать при клике по ссылкам (если
make_url = true
).
Пример использования TxtToHTML:
Допустим, у нас есть строка со смешанным контентом:
$text = "
текст текст текст текст
длиннноесловодлиннноеслово
<code>код код код</code>
<quote>цитата цитата цитата</quote>
<b>жирный текст</b>
<i>курсив</i>
<u>подчёркнутый</u>
ссылка: http://www.1c-bitrix.ru
email: support@1c-bitrix.ru
";
echo TxtToHTML(
$text,
true, // make_url
20, // max_string
"Y", // quote_tag_enabled
"N", // not_convert_amp
"Y", // code_tag_enabled
"Y", // biu_tags_enabled
"quotetable",
"tdquotehead",
"tdquote",
"codetable",
"tdcodehead",
"tdcodebody",
"codetextarea"
);
Результат получится примерно такой (приведём основную часть, опуская служебные теги):
текст текст текст текст <br>
длиннноесловодлиннн оеслово<br>
<table class='codetable'>
<tr>
<td class='tdcodehead'>Код</td>
</tr>
<tr>
<td class='tdcodebody'>
<textarea class='codetextarea' contentEditable=false cols=60 rows=15 wrap=virtual>код код код</textarea>
</td>
</tr>
</table><br>
<table class='quotetable' width='95%' border='0' cellpadding='3' cellspacing='1'>
<tr>
<td class='tdquotehead'>Цитата</td>
</tr>
<tr>
<td class='tdquote'>цитата цитата цитата</td>
</tr>
</table><br>
<b>жирный текст</b><br>
<i>курсив</i><br>
<u>подчёркнутый</u><br>
ссылка: <a class="txttohtmllink" href="http://www.1c-bitrix.ru">http://www.1c-bitrix.ru</a><br>
email: <a class="txttohtmllink" href="mailto:support@1c-bitrix.ru">support@1c-bitrix.ru</a>
Чтобы результат отображался корректно, нужно не забыть подключить соответствующие стили (CSS). Пример простых стилей:
.quotetable, .codetable {
width: 90%;
}
.quotetable .tdquotehead,
.quotetable .tdquote,
.codetable .tdcodehead,
.codetable .tdcodebody,
.codetextarea {
padding: 2px;
font-family: Arial;
font-size: 12px;
color: #000000;
}
.quotetable .tdquotehead,
.codetable .tdcodehead {
font-weight: bold;
}
.quotetable .tdquote,
.codetable .tdcodebody {
border: 1px solid black;
}
.quotetable .tdquotehead,
.quotetable .tdquote,
.codetable .tdcodehead,
.codetable .tdcodebody,
.codetextarea {
background-color: #FFFFFF;
}
.codetextarea {
border: 0;
width: 100%;
overflow: auto;
}
Совет: При работе с большими текстами не забудьте учесть проблему лишних переносов строк и необходимость экранировать определённые спецсимволы, если планируется дополнительная логика обработки.
2. Функция HTMLToTxt
Обратная задача — уметь очищать HTML-код или приводить его к простому текстовому виду. Например, вы парсите загруженный пользователем контент, получаете HTML-разметку и хотите убрать теги или оставить только их текстовое содержимое. Именно для этого предназначена функция HTMLToTxt.
Сигнатура функции:
string HTMLToTxt(
string text,
string host = "",
array delete = array(),
string maxlen = "70"
);
Назначение и параметры:
- text — входная строка в формате HTML.
- host — web-адрес сайта (по умолчанию пуст). Если задан, то функция будет подставлять этот адрес ко всем относительным ссылкам.
- delete — массив регулярных выражений, которые будут удалены из текста.
- maxlen (по умолчанию
"70"
) — если это число, то функция будет вставлять тег<br/>
каждыеN
символов.
Пример использования HTMLToTxt:
Предположим, мы имеем следующий HTML-контент:
$str = '
<table>
<tr>
<td valign=top><b><a href="/ru/products/sitemanager/editions/business.php">Бизнес</a>
</b> - полная версия продукта для управления интернет-магазином, интеграция
с "1С:Торговля и Склад", поддержка дилерских сетей.<br>
<font class=smalltext><b>$1699</b> (MySQL-версия)<br><b>$24500</b>
(Oracle-версия)</font></td>
</tr>
</table>
<ul>
<li>Пункт 1</li>
<li>Пункт 2</li>
<li>Пункт 3</li>
</ul>
';
echo HTMLToTxt($str, "http://www.bitrix.ru");
На выходе мы получим:
Бизнес [ http://www.bitrix.ru/ru/products/sitemanager/editions/business.php ]
- полная версия продукта для управления интернет-магазином, интеграция с
"1С:Торговля и Склад", поддержка дилерских сетей.
$1699 (MySQL-версия)
$24500 (Oracle-версия)
- Пункт 1
- Пункт 2
- Пункт 3
Удаление отдельных тегов или содержимого:
Иногда нужно только убрать конкретные теги, при этом оставив их содержимое. К примеру, если мы хотим удалить <a>
и <img>
, но сохранить текст в них, можно использовать массив шаблонов для delete
:
$string = 'message <a href="http://www.google.com" target="_blank" rel="nofollow">http://www.google.com</a>';
$newString = HTMLToTxt($string, "", array("'<img[^>]*?>'si", "'<a[^>]*?>'si"));
echo $newString;
// Результат: message http://www.google.com
3. Практические кейсы применения
- Форматирование пользовательского контента: Многие разработчики сталкиваются с проблемой, когда пользователи оставляют тексты с некорректным форматированием, «ломающими» вёрстку. Используя TxtToHTML с параметрами по ограничению длины строки или разбивке слов, можно избежать «вылазящих» за границы блоков ссылок или длинного кода.
- Безопасная публикация: Если вы получаете HTML из внешних источников (форумы, формы обратной связи и т. д.), желательно очистить код от вредоносных скриптов. С помощью HTMLToTxt можно сначала привести весь текст в «сырой» вид, а затем по необходимости снова отформатировать «чистым» HTML, уже без потенциально опасных тегов.
- Подготовка текста к рассылкам: Некоторые email-рассылки требуют упрощённого текстового формата без HTML-тегов. HTMLToTxt поможет быстро преобразовать веб-контент в текст, удобный для писем или push-уведомлений.
- Превращение длинного текста в web-страницу: В случаях, когда нужно выложить документацию или инструкции, написанные «просто в текстовом файле», легко воспользоваться TxtToHTML, чтобы добавить базовые переносы строк, ссылки, выделить цитаты и код.
- Логирование и отладка: Когда требуется записывать HTML в логи, может быть сложно читать многоуровневые теги. Если преобразовать «шумный» HTML в обычный текст, анализ лог-файлов заметно упрощается.
4. Рекомендации по SEO и удобству использования
- Используйте корректные заголовки и стили. Если вставляете результат TxtToHTML в контент, уделяйте внимание структуре документа. Заголовки, параграфы и списки улучшают восприятие материала и влияют на SEO.
- Не перебарщивайте с разбивкой слов (max_string). Если слишком часто разбивать слова, текст станет нечитаемым. Ставьте оправданное значение, которое не ломает смысл.
- Сохраняйте привлекательность ссылок. Старайтесь правильно задавать класс
link_class
, чтобы стилизовать ссылки согласно общему дизайну, и не забывайте проmake_url = true
, если хотите автоматически обрабатывать URL и email. - Учитывайте особенности индексирования. Если вы формируете контент динамически, важно, чтобы поисковые системы (Google, Яндекс и т. д.) видели итоговый HTML без лишних тегов и скриптов. Функции TxtToHTML и HTMLToTxt призваны упростить создание удобного для SEO контента.
Заключение
Функции TxtToHTML и HTMLToTxt — незаменимые помощники при работе с текстовыми данными в рамках CMS 1С-Битрикс. Они позволяют эффективно управлять пользовательским контентом, делая его безопасным, читабельным и стилистически оформленным. В зависимости от ваших задач, вы можете либо «облагородить» обычный текст, превратив его в HTML-код, либо убрать из HTML всю разметку и оставить только «чистый» текст.
Используйте TxtToHTML и HTMLToTxt в сочетании с другими инструментами 1С-Битрикс, следуйте рекомендациям по безопасности и SEO, и ваш контент всегда будет выглядеть актуально и профессионально.