@Seahunter

Как можно разбить контент страницы на заголовки и содержимое?

Здравствуйте, нужна помощь. Есть пост, в нём содержатся какие-то заголовки(h1-h6) и другой контент(различные другие теги). Можно ли как-то это разбить на на массив примерного вида:
<?php

$result = [
	'h1' => [
		'title' => 'First title',
		'content' => '<p>Hello world</p>'
	],
	'h2' => [
		'title' => 'Second title',
		'content' => '<p><a>Hello world 2</a></a>'
	]
];

Может быть это можно как-то через регулярку или через Dom Document. Ищу, но подходящего не могу найти решение или подсказки.
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
Пример, как регуляркой вытащить содержимое всех h* тегов
Но чтобы вытащить content, нужно уже смотреть на структуру страницы: где относительно заголовков расположен контент и тд. Это легко в случае если мы работаем с конкретным сайтом, то есть пишется код под сайт, и сложно если нужно некий универсальный парсер любых сайтов.

<?php
$html = file_get_contents('https://toster.ru');

$headers = [];
for($h = 1; $h <= 6; $h++)
{
    preg_match_all('!<h'.$h.'.*?>(.*?)</h'.$h.'!usi', $html, $out);
    if(isset($out[1]) && !empty($out[1]))
    {
        $headers["H".$h] = array_map('trim', $out[1]);
    }
}

print_r($headers);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы