当前位置/首页/正文
一键获取网站favicon图标API代码
2023-07-23 16:18:55
81
kiha小陌
分享一下获取网站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']);
下一篇:如何弄一个伪状态的本地授权验证
更新时间:2023-07-23 16:18:55
本文地址:http://xxmo.cn/post-14.html
版权声明:本站所发布的全部内容源于互联网搬运,仅限于小范围内传播学习和文献参考,请在下载后24小时内删除。如果有侵权之处请第一时间联系我们删除,敬请谅解!
评论留言