PHP get_meta_tags()无法正常工作

时间:2017-12-17 03:29:40

标签: php function meta get-meta-tags

我想获得meta标签(特别是og:title,og:description和og:image)......

我使用以下代码,

$tags = get_meta_tags('https://www.shoutmeloud.com/review-of-hostgator-webhosting-wordpress.html/');
echo "<pre>";
print_r($tags);

返回以下数组

Array
(
    [viewport] => width=device-width, initial-scale=1
    [description] => Check out HostGator review for year 2017. This review if written after using Hostgator for 5 years. Is Hostgator Good hosting? Find out answer here
    [twitter:card] => summary_large_image
    [twitter:description] => Check out HostGator review for year 2017. This review if written after using Hostgator for 5 years. Is Hostgator Good hosting? Find out answer here
    [twitter:title] => A Blogger Review of HostGator Shared Hosting Plan
    [twitter:site] => @shoutmeloud
    [twitter:image] => https://www.shoutmeloud.com/wp-content/uploads/2014/08/Review-of-Hostgator-Shared-Hosting-Plan.jpg
    [twitter:creator] => @denharsh
    [generator] => Easy Digital Downloads v2.8.14
    [msapplication-tileimage] => https://www.shoutmeloud.com/wp-content/uploads/2017/12/cropped-favicon-270x270.png
)

PHPFidlle:http://phpfiddle.org/main/code/qe22-3r5n

为什么它不返回像og:title, og:description and og:image这样的标签,即使它们在该URL的源代码上也是如此。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

那是因为get_meta_tags正在寻找name属性。

  

名称属性的值成为键

您要查找的所有标记都列在property属性下。

如果您是源页面的所有者,则只需将name属性添加到与property属性具有相同值的元素中。

如果没有,那么您可以将DOMDocumentfile_get_contentscurl结合使用,以获取您感兴趣的具体值。

例如:

<?php
$content = file_get_contents('https://www.shoutmeloud.com/review-of-hostgator-webhosting-wordpress.html');

$doc = new DOMDocument();

// squelch HTML5 errors
@$doc->loadHTML($content);

$meta = $doc->getElementsByTagName('meta');
foreach ($meta as $element) {
    $tag = [];
    foreach ($element->attributes as $node) {
        $tag[$node->name] = $node->value;
    }
    $tags []= $tag;
}

print_r($tags);

结果:

Array
(
    [0] => Array
        (
            [charset] => UTF-8
        )

    [1] => Array
        (
            [name] => viewport
            [content] => width=device-width, initial-scale=1
        )

    [2] => Array
        (
            [name] => description
            [content] => Check out HostGator review for year 2017. This review if written after using Hostgator for 5 years. Is Hostgator Good hosting? Find out answer here
        )

    [3] => Array
        (
            [property] => og:locale
            [content] => en_US
        )

    [4] => Array
        (
            [property] => og:type
            [content] => article
        )

    [5] => Array
        (
            [property] => og:title
            [content] => A Blogger Review of HostGator Shared Hosting Plan
        )

    [6] => Array
        (
            [property] => og:description
            [content] => Check out HostGator review for year 2017. This review if written after using Hostgator for 5 years. Is Hostgator Good hosting? Find out answer here
        )

    [7] => Array
        (
            [property] => og:url
            [content] => https://www.shoutmeloud.com/review-of-hostgator-webhosting-wordpress.html
        )

    [8] => Array
        (
            [property] => og:site_name
            [content] => ShoutMeLoud
        )

    [9] => Array
        (
            [property] => article:publisher
            [content] => https://www.facebook.com/shoutmeloud
        )

    [10] => Array
        (
            [property] => article:author
            [content] => https://www.facebook.com/denharsh
        )

    [11] => Array
        (
            [property] => article:tag
            [content] => hostgator
        )

    [12] => Array
        (
            [property] => article:tag
            [content] => Review
        )

    [13] => Array
        (
            [property] => article:tag
            [content] => Wordpress Webhosting
        )

    [14] => Array
        (
            [property] => article:section
            [content] => Webhosting
        )

    [15] => Array
        (
            [property] => article:published_time
            [content] => 2016-08-18T15:51:46+05:30
        )

    [16] => Array
        (
            [property] => article:modified_time
            [content] => 2017-11-29T23:50:31+05:30
        )

    [17] => Array
        (
            [property] => og:updated_time
            [content] => 2017-11-29T23:50:31+05:30
        )

    [18] => Array
        (
            [property] => fb:admins
            [content] => 100000563323286
        )

    [19] => Array
        (
            [property] => og:image
            [content] => https://www.shoutmeloud.com/wp-content/uploads/2014/08/Review-of-Hostgator-Shared-Hosting-Plan.jpg
        )

    [20] => Array
        (
            [property] => og:image:secure_url
            [content] => https://www.shoutmeloud.com/wp-content/uploads/2014/08/Review-of-Hostgator-Shared-Hosting-Plan.jpg
        )

    [21] => Array
        (
            [name] => twitter:card
            [content] => summary_large_image
        )

    [22] => Array
        (
            [name] => twitter:description
            [content] => Check out HostGator review for year 2017. This review if written after using Hostgator for 5 years. Is Hostgator Good hosting? Find out answer here
        )

    [23] => Array
        (
            [name] => twitter:title
            [content] => A Blogger Review of HostGator Shared Hosting Plan
        )

    [24] => Array
        (
            [name] => twitter:site
            [content] => @shoutmeloud
        )

    [25] => Array
        (
            [name] => twitter:image
            [content] => https://www.shoutmeloud.com/wp-content/uploads/2014/08/Review-of-Hostgator-Shared-Hosting-Plan.jpg
        )

    [26] => Array
        (
            [name] => twitter:creator
            [content] => @denharsh
        )

    [27] => Array
        (
            [name] => generator
            [content] => WordPress 4.9.1
        )

    [28] => Array
        (
            [name] => generator
            [content] => Easy Digital Downloads v2.8.14
        )

    [29] => Array
        (
            [property] => fb:pages
            [content] => 94019601674
        )

    [30] => Array
        (
            [name] => msapplication-TileImage
            [content] => https://www.shoutmeloud.com/wp-content/uploads/2017/12/cropped-favicon-270x270.png
        )

    [31] => Array
        (
            [content] => Hostgator
            [itemprop] => name
        )

    [32] => Array
        (
            [content] => 1
            [itemprop] => worstRating
        )

    [33] => Array
        (
            [content] => 4.5
            [itemprop] => ratingValue
        )

    [34] => Array
        (
            [content] => 5
            [itemprop] => bestRating
        )

    [35] => Array
        (
            [content] => Hostgator
            [itemprop] => name
        )

)