Что делает метод 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, справочник

Интернет-магазин от 120 000 руб., срок от 4 недель

Платформа для продажи товаров или услуг. Включает интерактивные формы обратной связи в каждой карточке товара, а также множество статичных и динамичных разделов.

Корпоративный сайт от 60 000 руб., срок от 3 недель

Готовый информационный ресурс, включающий лицензию на 1С-Битрикс «Стандарт», технологию «Композитный сайт».

Лендинг от 25 000 руб., срок от 2 недель

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