Извлечение Open Graph метаданных в PHP

Извлечение Open Graph метаданных в PHP

Извлечение Open Graph метаданных в PHP

Open Graph — это протокол, разработанный для интеграции с социальными сетями, такими как VK и др. Он позволяет веб-странице описать себя с помощью метатегов, что способствует улучшению отображения ссылок на страницу в социальных сетях.

Этот код написан на PHP и предназначен для получения HTML-контента с заданного URL и парсинга Open Graph метаданных. Он извлекает og:* метатеги из HTML и возвращает их в виде массива.

Разбор кода

<?php



function parseOpenGraphMeta(string $html): array

{

    libxml_use_internal_errors(true); // Отключаем вывод ошибок при парсинге HTML для предотвращения вывода ошибок на экран

    $doc = new DomDocument();

    $doc->loadHTML($html); // Загружаем HTML-контент для последующего парсинга

    $xpath = new DOMXPath($doc); // Инициализируем XPath для поиска элементов в HTML-документе

    $query = '//*/meta[starts-with(@property, 'og:')]'; // XPath-запрос для поиска всех meta-тегов с атрибутом "property" начинающимся на "og:"

    $metas = $xpath->query($query); // Выполняем XPath-запрос, который возвращает список элементов meta с og-тегами

    $og_meta = [];



    foreach ($metas as $meta) { // Перебираем найденные og-теги

        $property = $meta->getAttribute('property'); // Извлекаем значение атрибута property

        $content = $meta->getAttribute('content'); // Извлекаем значение атрибута content

        $og_meta[$property] = $content; // Добавляем og-метаданные в ассоциативный массив, где ключ — это свойство, а значение — содержимое

    }



    return $og_meta; // Возвращаем массив og-метаданных

}



function httpGet(string $url): string

{

    // Настройки запроса HTTP GET

    $options = [

        'http' => [

            'method' => 'GET',

            'header' => [

                // Устанавливаем User-Agent, чтобы запрос выглядел как от браузера

                'User-Agent: ' . ($_SERVER['HTTP_USER_AGENT'] ?? 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'),

                'Accept: text/html', // Устанавливаем Accept-заголовок

            ],

        ]

    ];



    $context = stream_context_create($options); // Создаем контекст для HTTP-запроса с заданными опциями



    $response = @file_get_contents($url, false, $context); // Выполняем GET-запрос



    if ($response === false) { // Обрабатываем возможные ошибки

        $error = error_get_last();

        throw new Exception($error['message']); // Генерируем исключение с сообщением об ошибке

    }



    return $response; // Возвращаем HTML-ответ

}



$url = 'https://myrusakov.ru'; // URL для запроса

$res = httpGet($url); // Получаем HTML-контент с URL



$meta = parseOpenGraphMeta($res); // Извлекаем og-метаданные



print_r($meta); // Выводим массив og-метаданных

?>

Разделение на функции

Этот код состоит из двух основных функций:

  1. parseOpenGraphMeta: Эта функция выполняет разбор HTML-контента, который передается в виде строки, и использует XPath для поиска всех meta-тегов, атрибут property которых начинается с og:. Возвращаемый массив содержит все найденные Open Graph метаданные.

  2. httpGet: Эта функция отправляет HTTP GET-запрос к заданному URL и возвращает содержимое страницы. Она настраивает заголовки запроса, чтобы имитировать браузер, обрабатывает возможные ошибки и генерирует исключения в случае неудачного запроса.

Принцип работы и использование

  • Укажите URL страницы, из которой нужно получить метаданные Open Graph.
  • Функция httpGet отправляет запрос и получает HTML-код страницы.
  • parseOpenGraphMeta анализирует HTML-контент, используя XPath-запросы, и находит Open Graph метаданные.
  • В конце скрипт выводит результат в виде ассоциативного массива, где ключи — это атрибуты og:property, а значения — их контент.
  • Пример результата

    Результат будет выглядеть как ассоциативный массив:

    Array

    (

        [og:title] => Title of the Page

        [og:description] => Description of the page for social networks

        [og:image] => https://example.com/image.jpg

        ...

    )

    Этот код полезен для автоматического извлечения Open Graph метаданных из веб-страниц. Его можно использовать для создания превью-ссылок, анализа контента или интеграции с социальными сетями.

    Источник

    НЕТ КОММЕНТАРИЕВ

    Оставить комментарий