PHPackages                             f4n70m/html-dom-parser - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. f4n70m/html-dom-parser

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

f4n70m/html-dom-parser
======================

Библиотека для парсинга HTML и работы с DOM

v0.1.2(1mo ago)01↓100%MITPHPPHP &gt;=7.4

Since Mar 13Pushed 1mo agoCompare

[ Source](https://github.com/F4N70M/html-dom-parser)[ Packagist](https://packagist.org/packages/f4n70m/html-dom-parser)[ RSS](/packages/f4n70m-html-dom-parser/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (6)Used By (0)

[![Latest Version on Packagist](https://camo.githubusercontent.com/c070627ee4d38a284ce43d9474d48791997c6360a10a1e9c4a991516d3f807bc/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f66346e37306d2f68746d6c2d646f6d2d7061727365722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/f4n70m/html-dom-parser)[![PHP Version](https://camo.githubusercontent.com/c3fbd93203cfdb91dc260f515dd95d30af2d4d811ecf5ade0215fc976f5f1913/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f66346e37306d2f68746d6c2d646f6d2d7061727365722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/f4n70m/html-dom-parser)[![License](https://camo.githubusercontent.com/c095a305a77f98ad0dae1699a25de0a3256b60dcefeb520ede01b3c8533d906f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f66346e37306d2f68746d6c2d646f6d2d7061727365722e7376673f7374796c653d666c61742d737175617265)](https://github.com/f4n70m/html-dom-parser/blob/main/LICENSE)

**HtmlDomParser** — это PHP-библиотека для продвинутого парсинга HTML, которая преобразует исходный код в удобное объектное дерево с богатой семантической информацией. Это не просто очередной парсер, а полноценный фреймворк для построения семантически-обогащённого DOM-дерева.

✨ Особенности
-------------

[](#-особенности)

- **🧠 Контекстная обработка узлов** – каждый узел обрабатывается с учётом его роли в документе (блочный, строчный, фразовый и т.д.) с использованием временных объектов контекста.
- **🔗 Схлопывание строчного контента** – объединение последовательности строчных элементов (текст, выделения, ссылки) в один элемент с единым текстом и коллекцией фрагментов форматирования.
- **🧩 Расширяемость через события и модули** – подписывайтесь на ключевые этапы парсинга (`PRE_NODE`, `POST_NODE`, `PRE_INLINE_COLLAPSE`, `POST_INLINE_COLLAPSE`) и модифицируйте результат.
- **⚠️ Продвинутая обработка ошибок** – классификация ошибок по уровням (notice, warning, error), узлы-ошибки в дереве, настройка поведения (исключения / сбор).
- **📊 Чистая объектная модель** – удобные интерфейсы для навигации, фильтрации и трансформации дерева (`ElementInterface`, `RichTextFragmentInterface`, `ElementListInterface` и др.).

📦 Установка
-----------

[](#-установка)

```
composer require f4n70m/html-dom-parser
```

🚀 Быстрый старт
---------------

[](#-быстрый-старт)

```
require_once 'vendor/autoload.php';

use HtmlDomParser\Parser;

$html = 'Привет, мир!';
$parser = new Parser($html);
$document = $parser->parse();

$element = $document->getChildren()->get(0);
echo $element->getLabel(); // "Привет, мир!"

// Информация о форматировании сохранена во фрагментах
foreach ($element->getFragments() as $fragment) {
    echo $fragment->getType() . ': ' . $fragment->getStart() . '-' . $fragment->getEnd();
}
// a: 7-10
```

📚 Документация
--------------

[](#-документация)

### 1. Общая информация

[](#1-общая-информация)

- [**Введение**](docs/01-general-information--01-introduction.md) – обзор концепций и возможностей библиотеки.
- [**Установка и начало работы**](docs/01-general-information--02-installation.md) – системные требования, установка через Composer, проверка.
- [**Быстрый старт**](docs/01-general-information--03-quick-start.md) – первые примеры парсинга и работы с данными.

### 2. Ядро системы

[](#2-ядро-системы)

- [**Модель данных элемента (Data, Label, Fragments)**](docs/02-core--01-data-model.md) – подробно о трёх ключевых свойствах элементов.
- [**Система контекстов**](docs/02-core--02-context-system.md) – временные объекты контекста, жизненный цикл узла, типы контекста.
- [**Утилиты**](docs/02-core--03-utilities.md) – `ContextDataResolver` (извлечение основного содержимого) и `InlineCollapser` (схлопывание строчных элементов).
- [**Обработка ошибок**](docs/02-core--04-error-handling.md) – уровни ошибок, узлы-ошибки, настройка поведения.

### 3. События и модули

[](#3-события-и-модули)

- [**Событийная модель**](docs/03-events-modules--01-event-system.md) – подписка на события, жизненный цикл событий, примеры с использованием `EventConstant`.
- [**Система модулей**](docs/03-events-modules--02-modules.md) – создание модулей, обнаружение через Composer, зависимости, конфигурация.

### 4. Информация

[](#4-информация)

- [**FAQ и решение проблем**](docs/04-appendix--01-faq.md) – ответы на частые вопросы и типичные сложности.
- [**Справочник API**](docs/04-appendix--02-api-reference.md) – полный перечень всех интерфейсов с методами (единый источник).

🧩 Примеры использования
-----------------------

[](#-примеры-использования)

Больше примеров можно найти в документации, особенно в разделах «Быстрый старт», «Модель данных» и «Утилиты». Вот ещё один фрагмент, демонстрирующий фильтрацию элементов:

```
$links = $div->getChildren()->filter(fn($el) => $el->getName() === 'a');
foreach ($links as $link) {
    echo $link->getData() . ': ' . $link->getLabel() . "\n";
}
```

### Работа с фрагментами форматирования

[](#работа-с-фрагментами-форматирования)

```
$html = 'Это жирный и курсивный текст';
$parser = new Parser($html);
$document = $parser->parse();

$p = $document->getChildren()->get(0);
echo $p->getLabel(); // "Это жирный и курсивный текст"

foreach ($p->getFragments() as $fragment) {
    echo $fragment->getType() . ': ' . $fragment->getStart() . '-' . $fragment->getEnd();
}
// b: 4-10
// i: 13-22
```

🛠 Требования
------------

[](#-требования)

- PHP 7.4+
- Расширение `ext-dom`
- Composer

📄 Лицензия
----------

[](#-лицензия)

Этот проект распространяется под лицензией MIT. См. файл [LICENSE](LICENSE).

🤝 Сообщество
------------

[](#-сообщество)

- Сообщить об ошибке или предложить улучшение: [GitHub Issues](https://github.com/f4n70m/html-dom-parser/issues)
- Пакет на Packagist: [f4n70m/html-dom-parser](https://packagist.org/packages/f4n70m/html-dom-parser)

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance96

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity27

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

5

Last Release

52d ago

PHP version history (2 changes)v0.0.0PHP &gt;=8.1

v0.1.2PHP &gt;=7.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/9c9998ac741fe8f150b7bd663515bd5f4580184afc5d78fd897694948e23f77c?d=identicon)[F4N70M](/maintainers/F4N70M)

---

Top Contributors

[![F4N70M](https://avatars.githubusercontent.com/u/48929371?v=4)](https://github.com/F4N70M "F4N70M (8 commits)")

### Embed Badge

![Health badge](/badges/f4n70m-html-dom-parser/health.svg)

```
[![Health](https://phpackages.com/badges/f4n70m-html-dom-parser/health.svg)](https://phpackages.com/packages/f4n70m-html-dom-parser)
```

###  Alternatives

[mtdowling/jmespath.php

Declaratively specify how to extract elements from a JSON document

2.0k472.8M135](/packages/mtdowling-jmespathphp)[opis/closure

A library that can be used to serialize closures (anonymous functions) and arbitrary data.

2.6k230.0M283](/packages/opis-closure)[masterminds/html5

An HTML5 parser and serializer.

1.8k242.8M226](/packages/masterminds-html5)[sabberworm/php-css-parser

Parser for CSS Files written in PHP

1.8k191.2M63](/packages/sabberworm-php-css-parser)[michelf/php-markdown

PHP Markdown

3.5k52.4M343](/packages/michelf-php-markdown)[jms/metadata

Class/method/property metadata management in PHP

1.8k152.8M88](/packages/jms-metadata)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
