【问题标题】:get meta description , title and image from url like facebook link sharing从 url 获取元描述、标题和图像,如 facebook 链接共享
【发布时间】:2014-06-03 15:41:30
【问题描述】:
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

【问题讨论】:

    标签: php arrays function metadata output


    【解决方案1】:

    你为什么使用正则表达式来解析&lt;meta&gt;标签?

    PHP 内置了一个解析meta信息的函数,叫做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/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/
    )
    

    你可以看到 titleimagedescription 正在被你真正想要的解析。

    【讨论】:

    • @SteveBals,我会想办法解决这个问题。同时你也可以查看answer
    【解决方案2】:

    我知道这个问题是 1.5 岁。但如果你还在寻找它,你可以使用https://urlmeta.org。它是一个免费的 API 来提取 URL 元数据。

    【讨论】:

      【解决方案3】:

      您可以通过以下方式检查 http 或 https 的 URL

      $url='stackoverflow.com';
      $http_check='http://';
      $https_check='https://';
      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);
      

      【讨论】:

        猜你喜欢
        • 2014-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-27
        • 1970-01-01
        • 1970-01-01
        • 2012-02-08
        相关资源
        最近更新 更多