Reputation: 948
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
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