Get meta tags: примеры (PHP)

Практическое применение get_meta_tags для анализа метаданных
Раздел: HTML
get_meta_tags(string $filename, bool $use_include_path = false): array|false

Функция get_meta_tags() в PHP предназначена для извлечения метатегов из HTML-документа и возвращения их в виде ассоциативного массива. Основное применение – парсинг метаданных веб-страниц, таких как description, keywords, author и других произвольных тегов meta с атрибутами name или property.

Аргументы функции
  • filename (string) – обязательный аргумент. Путь к локальному HTML-файлу или URL (если включена опция allow_url_fopen).
  • use_include_path (bool) – необязательный аргумент, по умолчанию false. Если установлен в true, функция ищет файл в include_path.
Базовые варианты использования
Чтение локального файла

Пример работы с локальным HTML-документом:

<?php
$meta = get_meta_tags('page.html');
print_r($meta);
?>
Array
(
    [description] => "Пример описания страницы"
    [keywords] => "ключевые, слова"
    [author] => "Иван Иванов"
    [viewport] => "width=device-width, initial-scale=1"
)
Использование use_include_path

Поиск файла в include_path:

<?php
// Предположим, что файл лежит в директории include_path
$meta = get_meta_tags('page.html', true);
print_r($meta);
?>
Аналогичные функции PHP
  • DOMDocument – предоставляет полный DOM-парсер для сложного извлечения данных. Предпочтительнее для обработки некорректного HTML или выборочного парсинга.
  • SimpleXMLElement (для XHTML) – подходит для строгих XML-документов.
  • preg_match / preg_match_all – регулярные выражения для простых случаев, но менее надёжны.
Аналоги в других языках

Get meta tags в Python

Используется библиотека BeautifulSoup:

from bs4 import BeautifulSoup
import requests

html = requests.get('http://example.com').text
soup = BeautifulSoup(html, 'html.parser')
meta = {}
for tag in soup.find_all('meta'):
    if tag.get('name'):
        meta[tag['name']] = tag.get('content', '')
print(meta)
JavaScript (Node.js с cheerio)
const cheerio = require('cheerio');
const axios = require('axios');

axios.get('http://example.com').then(response => {
    const $ = cheerio.load(response.data);
    const meta = {};
    $('meta[name]').each((i, el) => {
        meta[$(el).attr('name')] = $(el).attr('content');
    });
    console.log(meta);
});
Типичные ошибки
Невозможно открыть файл

Возникает при неверном пути или отсутствии прав доступа:

<?php
$meta = get_meta_tags('несуществующий.html');
// Warning: get_meta_tags(несуществующий.html): Failed to open stream
var_dump($meta); // bool(false)
?>
Попытка чтения URL без allow_url_fopen
<?php
// Если allow_url_fopen выключена
$meta = get_meta_tags('http://example.com');
// Предупреждение и возврат false
?>
Изменения в версиях PHP
  • PHP 8.0 – аргумент use_include_path теперь имеет тип bool. Передача других типов вызывает ошибку TypeError.
  • PHP 7.4 – улучшена обработка ошибок при чтении URL.
Расширенные примеры
Фильтрация определённых метатегов
Пример php
<?php
$allMeta = get_meta_tags('https://example.com');
$filtered = array_filter($allMeta, fn($key) => in_array($key, ['description', 'keywords']), ARRAY_FILTER_USE_KEY);
print_r($filtered);
?>
Обработка Open Graph и Twitter Cards

Функция также извлекает property (OG-теги):

Пример php
<?php
// В HTML: 
$meta = get_meta_tags('page.html');
echo $meta['og:title'] ?? 'Не указано';
?>
Логирование отсутствующих тегов
Пример php
<?php
$required = ['description', 'author'];
$meta = get_meta_tags('page.html');
foreach ($required as $tag) {
    if (!isset($meta[$tag])) {
        error_log("Отсутствует метатег: $tag");
    }
}
?>

PHP get_meta_tags function comments

En
Get meta tags Extracts all meta tag content attributes from a file and returns an array