如果你喜欢随手收藏网站,并且希望能存储在“云端”,而你恰好拥有自己的网站主机,也许你可以试试自己动手编写一个独一无二的收藏夹……
如果你每次在博客添加“友链”的时候都要手动找图片充当友链图标,也许你希望有一种方法能够自动获取友链图标……
如果你无聊到蛋疼,连每周五的《暴走大事件》都安抚不了你寂寞的心,也许会希望找些有意思的小东西来排遣……

好了前面是废话,下面贴上我用于实现获取 favicon.ico 的代码(PHP): ̄□ ̄||
1.测试页面 test.php:

if(isset($_POST['url'])){
  include 'domain.php';
 $favicon=getFavicon($_POST['url']);
 set_time_limit(0);//避免连接超时,设定对程序运行时间未做限制
  $handdle=@fopen($favicon, 'r');//打开远程文件
 $content=null;
  if($handdle){
   echo 'from web!';
   while($data=@fread($handdle,500000)){
     $content.=$data;
    }
   fclose($handdle);
 }else{
    echo 'from local!';//如果没有获取到远程文件,你需要在本地准备一个default.ico用作缺省值
   $handdle=fopen('pic/default.ico', 'r');//打开模式为r
   $content=fread($handdle,filesize('pic/default.ico'));//读为二进制
    fclose($handdle);
 }
 echo getDomain($_POST['url']);
  $file = fopen('pic/'.getDomain($_POST['url']).'.ico', 'w');//准备写入,文件名是域名
  fwrite($file,$content);//写入
 fclose($file);//关闭
}

2.测试页面 include 的 domain.php 文件:

function getDomain($url){ //截取玉米
  if(stristr($url,"://")){
    $start=stripos($url,"://");
   if($end=stripos($url,"/",$start+3)) return substr($url,$start+3,$end-$start-3);
   else return $url;
 }else{
    if($end=stripos($url,"/")) return substr($url,0,$end);
    else return $url;
 }
}
function getFavicon($url){ //生成favicon.ico路径
  $domain=getDomain($url);
  return "http://".$domain."/favicon.ico";
}

3.提交用到的表单:

<form action="test.php" method="post">
 <input type="text" name="url">
  <input type="submit" value="获取">
</form>

虽然没人看但还是要说原创内容转载请注明出处就是这么任性(-__-)b

版权属于:香菇
本文链接:https://blog.siitake.cn/php-get-favicon.html
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!