帝国cms商业授权版 帝国cms导航站如何通过链接一键获取网站meta信息(标题、关键词、描述)

帝国CMS教程

  有朋友想做个导航站,找了一圈网上关于帝国cms内核的网址导航站源码,发现价值2999元帝国CMS芒果目录网整站源码符合他的需求,在网上下载安装该源码后发现通过链接一键获取网站meta信息(标题、关键词、描述)和只获取权重网站功能已经失效,同时在线php网站缩略图功能也失效了,问能不能做一款导航站,对于帝国cms功能的二次开发,小编博客时间上是比较紧张的,所以只能说先测试一下,不保证能全部解决

  需求一:通过链接一键获取网站meta信息(标题、关键词、描述)

  对于这个需求,小编博客,下载了价值2999元帝国CMS芒果目录网整站源码,发现原需求接口也是使用,php使用正则表达式获取meta信息

  • /** 获取META信息 */
  • function get_sitemeta($url) {
  • $data = file_get_contents($url);
  • $meta = array();
  • if (!empty($data)) {
  • #Title
  • preg_match('/<TITLE>([wW]*?)</TITLE>/si', $data, $matches);
  • if (!empty($matches[1])) {
  • $meta['title'] = $matches[1];
  • }
  • #Keywords
  • preg_match('/<METAs+name="keywords"s+content="([wW]*?)"/si', $data, $matches);
  • if (empty($matches[1])) {
  • preg_match("/<METAs+name='keywords's+content='([wW]*?)'/si", $data, $matches);
  • }
  • if (empty($matches[1])) {
  • preg_match('/<METAs+content="([wW]*?)"s+name="keywords"/si', $data, $matches);
  • }
  • if (empty($matches[1])) {
  • preg_match('/<METAs+http-equiv="keywords"s+content="([wW]*?)"/si', $data, $matches);
  • }
  • if (!empty($matches[1])) {
  • $meta['keywords'] = $matches[1];
  • }
  • #Description
  • preg_match('/<METAs+name="description"s+content="([wW]*?)"/si', $data, $matches);
  • if (empty($matches[1])) {
  • preg_match("/<METAs+name='description's+content='([wW]*?)'/si", $data, $matches);
  • }
  • if (empty($matches[1])) {
  • preg_match('/<METAs+content="([wW]*?)"s+name="description"/si', $data, $matches);
  • }
  • if (empty($matches[1])) {
  • preg_match('/<METAs+http-equiv="description"s+content="([wW]*?)"/si', $data, $matches);
  • }
  • if (!empty($matches[1])) {
  • $meta['description'] = $matches[1];
  • }
  • }
  • return $meta;
  • }

  简单写了个index.php,加入以下代码,测试该正则表达式是正确的,不论是http://开头还是https://开头链接都可以获取到meta信息三件套标题、关键词和描述

  •   $site = "http://qinshining.com";
  •   $content = get_sitemeta($site);
  •   print_r($content);

  那么在帝国cms信息页点击获取网站信息却不成功,是哪里除了问题呢?

  问题一:点击获取网站信息提示非法来源

  解决:后台--系统设置--安全参数设置--开启后台来源认证码--把金刚模式改成刺猬模式

  问题二:修改问题一,但是点击获取网站信息无法获取meta信息

  通过弹窗链接发现,点击获取网站信息时包含meta信息和权重信息

  而权重信息链接是失效的,只需要把获取权重的参数删除即可获取meta信息

  问题三:只能获取http://开头的网站,https://开头的网站meta信息无法获取

  原因是原程序作者在写入时,就没有考虑https://

  这时,只需要运用PHP curl_init()简单使用在HTTP、HTTPS上的写法,就能获取到网站meta信息

  •   curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);//不做服务器认证
  •   curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//不做客户端认证

  至此,成功实现通过链接获取网站meta信息,也就是标题、关键词、和描述

帝国cms商业授权版 帝国cms导航站如何通过链接一键获取网站meta信息(标题、关键词、描述) 第1张

  需求二:获取网站权重,也就是百度搜索、360搜索、搜狗搜索、神马搜索权重,这个小编博客目前不打算写,原因很简单,目前没有找到免费的接口!爱站和站长工具的接口都是需要收费的,至于一些个人博客提供的api,更不打算写了,因为不知道能用多久!

  所以这个需求放弃做了。

  需求三:通过链接获取网站缩略图

  原程序模板使用的是:https://blinky.nemui.org/获取网站缩略图,但是现在似乎网站挂掉了,小编博客使用国内ip访问无法打开,使用外网访问也打不开。简单搜索国内网站缩略图的api接口,免费的基本没有,这个功能也只能作罢,如果有免费的网站缩略图api接口,可以抽空写上,不过可以换个方式,可以使用网站ico图片作为缩略图,只需要网址+/favicon.ico即可,至于帝国cms无法上传ico图标,可以查看文章:帝国cms无法上传ico图标格式文件的解决方法

  至此,只实现了通过链接一键获取网站meta信息。