my code is function getTitle($Url){ $str = file_get_contents($Url); if(strlen($str)>0){ preg_match("/<title>(.*)</title>/",$str,$title); return $title[1]; } else { return false; } } function getMetas($Url){ $str = file_get_contents($Url); if(strlen($str)>0){ // preg_match("/<title>(.*)</title>/",$str,$title); preg_match("/<meta name="description" content="(.*?)"/",$str,$title); // preg_match( '<meta name="description".*content="([^"]+)">siU', $str, $title); return $title[1]; } else { return false; } } //Example: $url=$_POST['url']; echo getTitle($url); echo "<br><br>"; echo getMetas($url);
this does not shows result for all the url’s , example http://google.com
Advertisement
Answer
Why are you using regular expression for parsing the <meta>
tags ?
PHP has an in-built function for parsing the meta information , it is called the get_meta_tags()
Illustration :
<?php $tags = get_meta_tags('http://www.stackoverflow.com/'); echo "<pre>"; print_r($tags);
OUTPUT:
Array ( [twitter:card] => summary [twitter:domain] => stackoverflow.com [og:type] => website [og:image] => http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon@2.png?v=fde65a5a78c6 [og:title] => Stack Overflow [og:description] => Q&A for professional and enthusiast programmers [og:url] => http://stackoverflow.com/ )
As you can see the title , image and description are being parsed which you really want.