Simple Html Dom

13 Мая 2020 20:00

Simple Html Dom - это библиотека для PHP, позволяющая без особых трудностей получить и обработать html документы. В основные преимущества этой библиотеки входит то, что она способна работать даже с невалидным Html-документом, где могут попадаться незакрытые теги и прочие ошибки. Методы взаимодействия с DOM похожи на методы в библиотеке Jquery!

Однако, данная библиотека идеально подходит лишь для небольших документов. Для обработки документов с большим объемом данных лучше всего использовать XPath.

Начало работы

  1. Качаем последнюю версию отсюда - ссылка
  2. Распаковываем архив в директорию с проектом;
  3. Подключаем основной файл (simple_html_dom.php).
<?php

require_once('simple_html_dom.php');

Функции и свойства для работы

str_get_html - формируем объект из строки;

$html = str_get_html('<html><body>Hello World!</body></html>');

file_get_html - формирует объект обращаясь к файлу с Html или к адресу.

$html = file_get_html('http://www.yandex.ru/');
$html = file_get_html('path/to/file/index.html');

$html->innertext - Весь текст страницы

$data->find - основной метод для работы с селекторами и тегами

$html->find('div'); //Поиск всех дивов
$html->find('#preview'); //Поиск элементов по id
$html->find('.myclass'); //Поиск элементов по class
$html->find('#preview div.myclass'); //поиск по комбинированным селекторам
$html->find('img[width]'); //поиск изображений с заданным атрибутом width
$html->find('img[width=400px]'); //поиск изображений с шириной 400px
$html->find('img[class=active myclass]'); //поиск изображений с несколькими классами
$html->find('a, img, br, span'); //поиск по нескольким тегам
$html->find('ul.myclass li'); //поиск всех потомков li в ul с классом myclass

Примеры

Поиск элементов с комбинированными селекторами

$elements = $html->find('#preview div.myclass');
if(count($elements)) {
    foreach($elements as $el) {
        echo $el->innertext;
    }
}