有的网站源码中加入了这几行代码:
1
或者是
1
这样可以指定图标位置存放。
但现在的浏览器大多支持自动获取网站根目录下的.ico文件,所以源码中看不到那几行代码。
可行的方法:
1 //得到每一个url,获取其中的icon 2 $url = $matches[1][$i]; 3 $contents = @file_get_contents($url); 4 preg_match('/ /', $contents,$icon); 5 if(!empty($icon)){ 6 // print_r($icon[1]); 7 echo ""; 8 $array = @get_headers($icon[1],1); 9 if(preg_match('/200/',$array[0])){ 10 // echo ""; 11 print_r($icon[1]);12 echo "";13 // echo "string";14 // print_r($array); 15 }else{ 16 //去掉多余的斜杠17 $url = substr_replace($url,"",-1);18 echo "无效url资源!".$url.$icon[1]; 19 echo "";20 }21 22 }else{23 //这里笔者试了很多种方法,后来发现通过url可以入手,从url截取网址的根目录,由于习惯性的把文件名名为favicon.ico,所以可以直接访问类似这样的url得到图标文件,http://wenwen.sogou.com/favicon.ico24 $url=substr($url,7);//去除前面25 $position = strpos($url, '/');26 $url=substr($url,0,$position);27 echo "";28 // echo $url."/favicon.ico";29 //判断网站的根目录是否存在.icon文件30 // $url='http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]; 31 // echo dirname($url);32 // if(file_exists("favicon.ico"))33 // echo "存在
";34 }
思路:
先判断源码中是否有那几行添加iocn的代码,如果有就直接抓取代码,再判断是否为有效的url,然后再判断显示,没有则获取根目录后显示。