Внимание: Новая версия может ломать совместимость, в этом случае используйте предыдующую версию в ветке или теге v1.0 с поддержкой php 5.4+
Класс \nokogiri оставлен для совместимости
Данная библиотека - это быстрый парсер html кода, который способен работать с невалидным кодом.
Под капотом используется библиотека LibXML.
На вход необходимо подавать документ в кодировке UTF-8 или DomDocument.
Для поиска элементов используются css-селекторы, которые преобразуются внутри в xpath выражение.
Ошибки html игнорируются
- Из строки
$saw = new \nokogiri($html);
$saw = \nokogiri::fromHtml($html);
- Из DOM элементов
$saw = new \nokogiri($dom);
$saw = \nokogiri::fromDom($dom);
Где элементы в $cssSelector имеют формат
tagName[attribute=value]#elementId.className:pseudoSelector(expression)
$saw->get('div > a[rel=bookmark]')->toArray();
Возвращает структуру в виде массива.
Значениями являются аттрибуты, текст под ключом #text и вложенные элементы под числовыми ключами
Возвращает HTML строку
Возвращает 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
- Минимальная версия PHP 7.3
- Минимальная версия LibXML 2.9.0
- Полный рефакторинг
- Частично изменено поведение, что может ломать совместимость
- Изменено поведение при загрузке HTML
- Покрытие тестами
- Исправлена работа nth-child и некоторых других селекторов
- Некорректные селекторы теперь выбрасывают исключения
- Добавлены новые селекторы
- Первая версия, 2011 год
- Минимальная версия PHP 5.4