需求一:通过链接一键获取网站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信息,也就是标题、关键词、和描述
需求二:获取网站权重,也就是百度搜索、360搜索、搜狗搜索、神马搜索权重,这个覃师宁博客目前不打算写,原因很简单,目前没有找到免费的接口!爱站和站长工具的接口都是需要收费的,至于一些个人博客提供的api,更不打算写了,因为不知道能用多久!
所以这个需求放弃做了。
需求三:通过链接获取网站缩略图
原程序模板使用的是:https://blinky.nemui.org/获取网站缩略图,但是现在似乎网站挂掉了,覃师宁博客使用国内ip访问无法打开,使用外网访问也打不开。简单搜索国内网站缩略图的api接口,免费的基本没有,这个功能也只能作罢,如果有免费的网站缩略图api接口,可以抽空写上,不过可以换个方式,可以使用网站ico图片作为缩略图,只需要网址+/favicon.ico即可,至于帝国cms无法上传ico图标,可以查看文章:帝国cms无法上传ico图标格式文件的解决方法
至此,只实现了通过链接一键获取网站meta信息。