Форум 1С-Битрикс

Парсинг дерева категорий на 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-Битрикс

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

от 4 недель

от 90 000 рублей

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

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.

Интернет-магазин на готовом решении

от 7 дней

от 40 000 рублей
запуск сайта в максимально короткие сроки

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