做网址导航、友情链接检测、SEO 工具时,经常需要输入一个网址后自动识别标题、描述和 favicon。下面是一个原生 PHP 单文件示例。
完整代码
<?php
function fetch_html($url) {
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 12,
CURLOPT_USERAGENT => 'Mozilla/5.0 Website Meta Bot',
]);
$html = curl_exec($ch);
curl_close($ch);
return $html ?: '';
}
function page_meta($url) {
$html = fetch_html($url);
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML('<?xml encoding="utf-8" ?>' . $html);
$xpath = new DOMXPath($dom);
$titleNode = $xpath->query('//title')->item(0);
$descNode = $xpath->query('//meta[translate(@name,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")="description"]')->item(0);
$iconNode = $xpath->query('//link[contains(translate(@rel,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz"),"icon")]')->item(0);
return [
'title' => $titleNode ? trim($titleNode->textContent) : '',
'description' => $descNode ? trim($descNode->getAttribute('content')) : '',
'favicon' => $iconNode ? trim($iconNode->getAttribute('href')) : rtrim($url, '/') . '/favicon.ico',
];
}
header('Content-Type: application/json; charset=utf-8');
echo json_encode(page_meta($_GET['url'] ?? 'https://bbs.lc'), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);使用方式
访问:meta.php?url=https://bbs.lc,就能返回网页标题、description 和 favicon 地址。
关键词:PHP 获取网页标题、PHP 获取 description、PHP favicon 获取。