Задать вопрос
@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. Ищу, но подходящего не могу найти решение или подсказки.
  • Вопрос задан
  • 55 просмотров
Подписаться 1 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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);
Ответ написан
Ваш ответ на вопрос

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

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