https://github.com/olamedia/nokogiri
HTML parser for PHP - Парсер HTML
https://github.com/olamedia/nokogiri
attr css domdocument html html-parser nokogiri php xpath
Last synced: 5 days ago
JSON representation
HTML parser for PHP - Парсер HTML
- Host: GitHub
- URL: https://github.com/olamedia/nokogiri
- Owner: olamedia
- License: mit
- Created: 2012-02-13T12:40:55.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2020-09-15T04:14:54.000Z (over 5 years ago)
- Last Synced: 2025-11-10T03:09:52.858Z (4 months ago)
- Topics: attr, css, domdocument, html, html-parser, nokogiri, php, xpath
- Language: PHP
- Homepage: http://olamedia.github.com/nokogiri/
- Size: 120 KB
- Stars: 225
- Watchers: 26
- Forks: 63
- Open Issues: 5
-
Metadata Files:
- Readme: README.RU.md
- License: LICENSE
Awesome Lists containing this project
README

> Внимание: Новая версия может ломать совместимость, в этом случае используйте предыдующую версию в ветке или теге v1.0 с поддержкой php 5.4+
> Класс \nokogiri оставлен для совместимости
[In English](README.md) [На русском](README.RU.md)
Парсер HTML
===========
Данная библиотека - это быстрый парсер html кода, который способен работать с невалидным кодом.
Под капотом используется библиотека LibXML.
На вход необходимо подавать документ в кодировке UTF-8 или DomDocument.
Для поиска элементов используются css-селекторы, которые преобразуются внутри в xpath выражение.
Использование
===================================
### Загрузка HTML
> Ошибки html игнорируются
* Из строки `$saw = new \nokogiri($html);` `$saw = \nokogiri::fromHtml($html);`
* Из DOM элементов `$saw = new \nokogiri($dom);` `$saw = \nokogiri::fromDom($dom);`
### get($cssSelector)
Где элементы в $cssSelector имеют формат
`tagName[attribute=value]#elementId.className:pseudoSelector(expression)`
```php
$saw->get('div > a[rel=bookmark]')->toArray();
```
### toArray()
Возвращает структуру в виде массива.
Значениями являются аттрибуты, текст под ключом #text и вложенные элементы под числовыми ключами
### toXml()
Возвращает HTML строку
### getDom() toDom()
Возвращает DOMDocument.
При передаче true первым аргументом - может возвращать также DOMNodeList или DOMElement
### Итерация по найденным элементам
```php
foreach ($saw->get('#sidebar a.topic') as $link){
var_dump($link['#text']);
}
```
Реализованные селекторы
=========================
* tag
* .class
* \#id
* \[attr\]
* \[attr=value\]
* :root
* :empty
* :first-child
* :last-child
* :first-of-type
* :last-of-type
* :only-of-type
* :nth-child(a)
* :nth-child(an+b)
* :nth-child(even/odd)
Требования
============
* DOM
* libxml >=2.9.0
* PHP >= 7.3
Лицензия
========
MIT
Что нового
==========
### 2.0.0
* Минимальная версия PHP 7.3
* Минимальная версия LibXML 2.9.0
* Полный рефакторинг
* Частично изменено поведение, что может ломать совместимость
* Изменено поведение при загрузке HTML
* Покрытие тестами
* Исправлена работа nth-child и некоторых других селекторов
* Некорректные селекторы теперь выбрасывают исключения
* Добавлены новые селекторы
### 1.0.0
* Первая версия, 2011 год
* Минимальная версия PHP 5.4