Создаем иерархическое дерево категорий из 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);
?> |