Блог разработчика 1С-Битрикс

Что делает метод Editor::isHtmlDocument? Полное описание и особенности работы

Описание метода Editor::isHtmlDocument

Описание метода Editor::isHtmlDocument в 1С-Битрикс

\Bitrix\Fileman\Block\Editor::isHtmlDocument

Описание метода isHtmlDocument из класса \Bitrix\Fileman\Block\Editor (располагается в файле bitrix/modules/fileman/lib/block/editor.php модуля fileman). Этот статический метод проверяет строку на наличие «признаков» полноформатного HTML-документа.

Как выглядит метод в исходном коде (примерная логика)

В разных версиях «1С-Битрикс» реализация может незначительно отличаться, однако в целом она сводится к тому, что метод ищет ключевые HTML-теги, характерные именно для «документного» HTML (а не просто кусочка HTML-кода). Обычно проверяют наличие:

  • тега <html> или <!DOCTYPE html>
  • или <head>
  • или <body>

Пример упрощённой реализации (чтобы вы понимали суть):

public static function isHtmlDocument($content)
{
    // Проверяем, встречаются ли ключевые теги,
    // характерные для HTML-документа
    if (
        stripos($content, '<html') !== false
        || stripos($content, '<body') !== false
        || stripos($content, '<head') !== false
        || stripos($content, '<!DOCTYPE') !== false
    )
    {
        return true;
    }

    return false;
}

Фактический код может содержать дополнительные условия или другие проверки, но общий принцип остаётся таким же. Важно: данный метод не гарантирует, что строка корректна с точки зрения вёрстки, а лишь указывает на то, что в строке присутствуют теги, обычно встречающиеся именно в «полноценном» HTML-документе.


Как использовать Editor::isHtmlDocument

Метод статический, поэтому вызывается напрямую через класс:


use Bitrix\Fileman\Block\Editor;
use Bitrix\Main\Loader;

Loader::includeModule("fileman");

$content = '<html><head><title>Demo</title></head><body>Текст...</body></html>';

if (Editor::isHtmlDocument($content))
{
    echo "Строка выглядит как HTML-документ.";
}
else
{
    echo "Строка не содержит структурных тегов HTML-документа.";
}

В этом примере вернётся true, так как присутствуют ключевые теги <html> и <body>.


Пример 2. Частичный HTML без «структурных» тегов

$content = '<div><strong>Просто кусок HTML без тега html/body</strong></div>';

if (Editor::isHtmlDocument($content))
{
    echo "Строка выглядит как полноценный HTML-документ.";
}
else
{
    echo "Нет, это не структурный документ, а лишь фрагмент HTML.";
}

Здесь метод вернёт false, поскольку не найдены теги <html>, <head>, <body> или <!DOCTYPE>. Таким образом, это просто HTML-фрагмент, а не целый документ.


Кратко

  • Где находится: Класс \Bitrix\Fileman\Block\Editor (модуль fileman), файл bitrix/modules/fileman/lib/block/editor.php.
  • Сигнатура:
    public static function isHtmlDocument(string $content): bool
    Возвращает true, если строка содержит характерные для HTML-документа теги (<html>, <body>, <head> и/или <!DOCTYPE>).
  • Назначение: Нужно для быстрой проверки, «похожа» ли строка на полноценный HTML-документ (а не просто кусок HTML).
  • Отличие от проверок вида containsHtmlTags:
    isHtmlDocument определяет, есть ли структура документа (теги верхнего уровня), тогда как обычная проверка на наличие тегов сообщит лишь о том, что строка содержит «хоть какой-то» HTML-код.

Если в вашем контенте должны быть ключевые теги документного уровня, метод isHtmlDocument поможет быстро это определить.

Теги:  D7, справочник


Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Лечение сайтов от вирусов

восстановление сайта и подъем версии PHP

от 25 000 рублей
Лечение сайтов на решениях АСПРО и прочих.

* полный комплекс лечения проекта и закрытия дыр

Модули и компоненты для «1С-Битрикс»

оценка производится на основе предоставленного Технического Задания

от 20 000 рублей
Разработка дополнительных модулей для 1С-Битрикс, расширение функционала, внедрение любых решений, требующихся для выполнения ваших бизнес-задач.

* стоимость зависит от конкретной задачи, ее объема и сложности выполняемых работ.