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