PHP Simple HTML DOM — это php библиотека с помощью которой можно написать парсер html страниц(ы). После загрузки страницы библиотека создает объект со всеми элементами, которые находились на странице и к которым теперь можно получить быстрый доступ с помощью встроенных функций.
Примеры Simple HTML DOM
Скачать simplehtmldom_1_9_1
Инициализация объекта (загрузка html-страницы)
require 'simple_html_dom.php'; //подключаем библиотеку
$html = file_get_html( 'http://www.example.com/' ); // получаем страницу
//во время работы из командной строки в windows (без http-сервера) лучше использовать следующую конструкцию:
$load = file_get_contents( $link );
$html= str_get_html( $load );
// и дальше работаем с переменной $html
Найдем нужный элемент
$element = $html->find( '.myclass' );
Функция find() — создаст нам массив со всеми доступными элементами с классом .myclass. Для того чтобы их все обработать придется сначала пропустить переменную через цикл для массива:
foreach( $element as $item ) {
//тут уже обрабатываем все элементы по очереди
}
Или как вариант — сразу выбрать нужный элемент указав индекс (как в массиве, начинается с нуля):
$element = $html->find( '.myclass', 0 );
Получим дочерний элемент:
Можно бродить по дереву вложенности, полезно если нужно обрабатывать страницу последовательно:
$element->children(0)->class; // класс первого дочернего элемента
$element->children(0)->children(1)->id //получил id вложенного элемента
$element->children(0)->outertext; //html-код элемента
$element->children(0)->innertext; //html-код внутри элемента
$eleemnt->children(0)->plaintext; //Текст внутри (очищенный от html)
$eleemnt->children(0)->tag; //html-тэг
Для обработки множества вложенных тегов последовательно можно пользоваться такими функциями:
$element->children($i)->tag;
$element->children(0)->children($i)->tag;
//и т.д.
Дополнительно можно добавить собственные функции обработки:
// запишем в функцию параметр "$element"
function my_callback($element) {
// скрыть все теги
if ($element->tag=='b')
$element->outertext = '';
}
// Регистрируем обратный вызов с именем нашей функции
$html->set_callback('my_callback');
// Функция будет вызвана во время вывода
echo $html;
Дополнительные примеры можно найти в официальной документации.