Парсинг дерева категорий на PHP с использованием Simple HTML DOM Parser

Внимание! Работает режим премодерации. Все сообщения публикуются после проверки!
Страницы: 1
Ответить
RSS
Парсинг дерева категорий на PHP с использованием Simple HTML DOM Parser
Как получить дерево категорий с помощью PHP Simple HTML DOM Parser

Для получения дерева категорий с использованием PHP Simple HTML DOM  Parser необходимо выполнить несколько шагов. Этот процесс включает  парсинг HTML-кода, поиск элементов, представляющих категории, и  построение иерархической структуры (дерева). Рассмотрим это подробно.
Изменено: Валерий Макеев - 28.09.2025 14:39:01
Создаем иерархическое дерево категорий из HTML-структуры с  вложенными элементами, используя PHP Simple HTML DOM Parser для анализа и  извлечения данных.
Код
<?php
require 'vendor/autoload.php';
use simplehtmldom\HtmlDocument;

// HTML-структура для парсинга
$html_content = '
<div class="categories">
    <div class="category">
        <a href="/electronics">Electronics</a>
        <div class="subcategories">
            <div class="category">
                <a href="/electronics/mobile">Mobile Phones</a>
            </div>
            <div class="category">
                <a href="/electronics/laptops">Laptops</a>
                <div class="subcategories">
                    <div class="category">
                        <a href="/electronics/laptops/gaming">Gaming Laptops</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="category">
        <a href="/clothing">Clothing</a>
    </div>
</div>';

// Парсим HTML и строим дерево категорий
$dom = new HtmlDocument();
$dom->load($html_content);
$tree = [];

foreach ($dom->find('.categories > .category') as $category) {
    $parseCategory = function($element) use (&$parseCategory) {
        $link = $element->find('a', 0);
        $category_data = [
            'name' => $link->plaintext,
            'url' => $link->href
        ];
        
        if ($element->find('.subcategories', 0)) {
            $category_data['children'] = [];
            foreach ($element->find('.subcategories > .category') as $child) {
                $category_data['children'][] = $parseCategory($child);
            }
        }
        
        return $category_data;
    };
    
    $tree[] = $parseCategory($category);
}

print_r($tree);
?>
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Разработка корпоративного сайта

от 7 дней

от 40 000 рублей

Разработка сайта без системы оплаты заказов через корзину

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.