получите мета-описание, заголовок и изображение с URL-адреса, такого как обмен ссылками на facebook


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

Это не показывает результат для всех URL-адресов, пример http://google.com

Author: Shankar Damodaran, 2014-04-19

3 answers

Почему вы используете регулярное выражение для анализа тегов <meta>?

PHP имеет встроенную функцию для анализа мета-информации , она называется get_meta_tags()

Иллюстрация:

<?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/[email protected]?v=fde65a5a78c6
    [og:title] => Stack Overflow
    [og:description] => Q&A for professional and enthusiast programmers
    [og:url] => http://stackoverflow.com/
)

Как вы можете видеть, заголовок , изображение и описание анализируются так, как вы действительно хотите.

 11
Author: Shankar Damodaran, 2014-04-19 04:36:39

Я знаю, что этому вопросу 1,5 года. Но если вы все еще ищете его, вы можете использовать https://urlmeta.org . Это бесплатный API для извлечения метаданных URL.

 7
Author: Moin, 2015-09-17 20:17:39

Вы можете проверить URL-адрес на http или https с помощью

$url='stackoverflow.com';
$http_check='http://';
$https_check='http://';
if(substr($url,0,7)!=$http_check){
   $url=$http_check.$url;
}else if(substr($url,0,8)!=$https_check){
   $url=$https_check.$url;
}else{
    $url=$url
}

Затем вы можете использовать приведенный выше ответ

<?php
$tags = get_meta_tags($url);
echo "<pre>";
print_r($tags);
 0
Author: Faizan Amin, 2017-05-06 06:34:11