当前位置/首页/正文

一键获取网站favicon图标API代码

分享一下获取网站favicon图标代码,这是以前弄的,不知道能不能用了。

保存PHP文件内 ?url=网址  即可

<?php
//include("common.php");
 class kihaxm{
    private $logo=ROOT.'assets/images/logo.png';//默认图标
    private $path='assets/cache/favicon/';//缓存地址
    private $url;
    private $extime=1296000;#缓存15天
    public function __construct($url){
     $this->url =$url;
     $this->get();
    }
    private function get(){
       preg_match("/^(http:\/\/|https:\/\/)?([^\/]+)/i",$this->url, $url2);
       $dir=ROOT.$this->path;
       !is_dir($dir) && mkdir($dir, 0777, true);
       if(is_file($dir.str_replace('.','_',$url2[2]).'.jpg') && (time()-filemtime($dir.str_replace('.','_',$url2[2]).'.jpg'))<$this->extime){
        $this->get_echo($dir.str_replace('.','_',$url2[2]).'.jpg');
       }
       $html=file_get_contents($this->url);
       if(!$html){ $html=get_curl($this->url); }
       if($url='' || empty($html)){
        $this->get_echo($this->logo);
       }
       $current_encode = mb_detect_encoding($html, array("ASCII","GB2312","GBK",'BIG5','UTF-8')); 
       $html = mb_convert_encoding($html, 'UTF-8', $current_encode);
       $html=$this->format($html);
       preg_match('|<link rel=\"icon\" href=\"(.*?)\"|i',$html,$m4);//获取icon
       if(!$m4[1]){
       preg_match('|<link rel=\"shortcut icon\" href=\"(.*?)\"(.*?)|si',$html,$m4);
       }
       if(!$m4[1]){
       preg_match('|<link rel=\"shortcut icon\" type=\"images/x-icon\" href=\"(.*?)\"|i',$html,$m4);//获取icon
       }
       if(!$m4[1]){
         $m4[1]="";
         if($this->httpcode("http://".$url2[2]."/favicon.ico")=='200'){
         $m4[1]="http://".$url2[2]."/favicon.ico";
          }
       }
       if(substr($m4[1],0,2)=='//'){
        $m4[1]='http:'.$m4[1];
       }else if($m4[1] && filter_var($m4[1],FILTER_VALIDATE_URL)==false){
         $m4[1]=$this->urlgsh($m4[1],$url2[2]);
       }
       #获取失败
       $logo=$m4[1];
       
       if($m4[1]==''){
       preg_match('|<img src=\"(.*?)logo.png\"|i',$html,$m5);
       $logo=$m5[1].'logo.png';
      if(!$m5[1]){
       preg_match('|<img src=\"(.*?)\logo.jpg"|i',$html,$m5);
       $logo=$m5[1].'logo.jpg';
       } if(!$m5[1]){
       preg_match('|<img src=\"(.*?)\logo.gif"|i',$html,$m5);
       $logo=$m5[1].'logo.gif';
       } if(!$m5[1]){
       preg_match('|<img src=\"(.*?)\logo.svg"|i',$html,$m5);
       $logo=$m5[1].'logo.svg';
       }
       if(filter_var($logo,FILTER_VALIDATE_URL)==false){
       $logourl=$this->urlgsh($logo,$url2[2]);
       if($this->httpcode($logourl)=='200'){$logo=$logourl;}else{$logo='';}
       }
      }
      
      if($this->httpcode($logo)=='200'){
       $img=$logo;
      }else{
       $img=$this->logo;#获取不到。使用默认logo
      }
      $this->get_image(str_replace('.','_',$url2[2]),$img);
    }
 private function get_echo($url){
     $img = file_get_contents($url,true);
     header("Content-Type: image/jpg;text/html; charset=utf-8");
     exit($img);
 }
 private function get_image($name,$url){
      $img=file_get_contents($url);
       if(!empty($img)){
        $name =$name.".jpg";
        file_put_contents(ROOT.$this->path.$name,$img);
       }
      $this->get_echo($url);
 }
 private function format($html){
     return preg_replace("/[\t\n\r]+/","",$html);
 }
 private function urlgsh($path,$url=''){
    if(substr($path,0,1)=='/'){
    $path=substr($path,1);
    }elseif(substr($path,0,2)=='./'){
    $path=substr($path,2); 
    }elseif(substr($path,0,3)=='../'){
    $path=substr($path,3);
    }elseif(substr($path,0,6)=='../../'){
    $path=substr($path,6);
    }
    return "http://".$url."/".$path;
   }
 private function httpcode($url){
  $ch = curl_init();
  $timeout = 15;
  curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch, CURLOPT_HEADER, 1);
  curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_exec($ch);
  return $httpcode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
  curl_close($ch);
  }
 }

new kihaxm($_GET['url']);

上一篇:给自己网站加上好看的loading加载动画

下一篇:如何弄一个伪状态的本地授权验证

更新时间:2023-07-23 16:18:55

本文地址:http://xxmo.cn/post-14.html

版权声明:本站所发布的全部内容源于互联网搬运,仅限于小范围内传播学习和文献参考,请在下载后24小时内删除。如果有侵权之处请第一时间联系我们删除,敬请谅解!

评论留言