Skip to content

Latest commit

 

History

History
90 lines (76 loc) · 3.33 KB

README.RU.md

File metadata and controls

90 lines (76 loc) · 3.33 KB

PHP Composer

Внимание: Новая версия может ломать совместимость, в этом случае используйте предыдующую версию в ветке или теге v1.0 с поддержкой php 5.4+

Класс \nokogiri оставлен для совместимости

In English На русском

Парсер 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)

$saw->get('div > a[rel=bookmark]')->toArray();

toArray()

Возвращает структуру в виде массива.
Значениями являются аттрибуты, текст под ключом #text и вложенные элементы под числовыми ключами

toXml()

Возвращает HTML строку

getDom() toDom()

Возвращает DOMDocument. При передаче true первым аргументом - может возвращать также DOMNodeList или DOMElement

Итерация по найденным элементам

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