Sasa1234
Sasa1234

Reputation: 948

PHP get_meta_tags() not working as I expected

I wanted to get meta tags (Specially og:title, og:description, and og:image)

I use following code:

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

It returns the following array,

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

Why it did not return tags like og:title, og:description and og:image even there are on source code of that URL. How do I correct this issue?

Upvotes: 2

Views: 4419

Answers (1)

Jeff Puckett
Jeff Puckett

Reputation: 40861

That's because get_meta_tags is looking for the name attribute.

The value of the name property becomes the key

All of the tags you are looking for are listed under the property attribute.

If you're the owner of the source page, then you could simply add the name attribute to the elements with the same value as the property attribute.

If not, then you could use something like DOMDocument in conjunction with file_get_contents or curl to get the specific values in which you're interested.

For example:

<?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);

Results in:

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
        )

)

Upvotes: 6

Related Questions