使用 get_meta_tags() 函数检索具有相同名称的元数据

Retrieve a meta with the same name with get_meta_tags() function

我正在尝试使用 php get_meta_tags() 函数检索网页的 <meta name="generator">

担心我的网页包含两个相同的元数据:

<meta name="generator" content="WordPress 5.9.3">
<meta name="generator" content="Site Kit by Google 1.73.0">

get_meta_tags() 似乎只想检索最后一个 我想要第一个

这是我的代码:

$fullURL = 'https://thibautchourre.com/';
$metas = get_meta_tags($fullURL);
$versionwp = $metas['generator']
echo $versionwp

一个想法?

问题是 get_meta_tags 正在返回一个数组,您不能有重复的数组键。

get_meta_tags函数仅returns名称重复时的最后一个元素。

If two meta tags have the same name, only the last one is returned

您可以使用解析器获取所有 meta 个元素。

样本:

<?php
$html = '<meta name="generator" content="WordPress 5.9.3">
<meta name="generator" content="Site Kit by Google 1.73.0">
';
$doc = new DOMDocument();
$doc->loadHTML($html);
$metas = $doc->getElementsByTagName('meta');
foreach($metas as $meta){
    if($meta->getAttribute('name') == 'generator'){
        echo $meta->getAttribute('content') . PHP_EOL;
    }
}

https://3v4l.org/jDeNo

使用 xpath 的替代方案,(改编自 get meta description tag with xpath

$html = '<meta name="generator" content="WordPress 5.9.3">
<meta name="generator" content="Site Kit by Google 1.73.0">
';
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//meta[@name="generator"]/@content');
foreach($nodes as $node){
    echo $node->textContent . PHP_EOL;
}