參考文章:
1、利用公共api提取任意網站favicon.ico圖標
2、使用PHP獲取網站Favicon的方法
最近做一個Tab需要在網站名旁邊顯示網站的Favicon以提高顯示效果,如圖:
開始做的時候想到的是利用Google的方式來獲取,使用“http://www.google.com/s2/favicons?domain=網址”的方式可以直接獲得網站的Favicon圖標並以16*16大小圖片的形式顯示出來,這個方法簡單方便,但在有些網絡環境下卻會出現圖片無法顯示的問題(需要翻牆),為了解決這個BUG我決定重新寫一個獲取Favicon的函數,使用自己的服務器以避免翻牆。
實際效果請參見示例:
http://favicon.byi.pw/?url=blog.icewingcc.com
如果不想自己寫方法的話也可以使用我提供的接口,即“http://favicon.byi.pw/?url=網址”,網址可以帶http://前綴。
代碼(調用Google的方式,這種方式可以減少代碼量,並且速度也比較快):
1 |
<?php |
2 |
if(isset($_GET['url'])){ |
3 |
$icon = file_get_contents("http://www.google.com/s2/favicons?domain=" . $_GET['url']); |
4 |
if($icon){ |
5 |
header('Content-type:image/png'); |
6 |
echo $icon; |
7 |
} |
8 |
} |
沒錯,就這幾行代碼搞定一切 ^_^
這樣只要我們使用的服務器能夠訪問Google就可以正常顯示出Favicon,不再受網絡環境的影響。
復雜些的方法就是自己寫獲取函數,這里我只提供思路,就不再寫代碼了,如果有需要代碼可留言,定附上。
一般網站都會把自己的Favicon圖標以“favicon.ico”命名並放在網站根目錄下,如http://www.baidu.com/favicon.ico。所以可以直接使用PHP函數 file_get_contents()來獲取圖片內容,設置Header為PNG圖片,顯示出來即可。
如果根目錄沒有favicon.ico這個文件的話可以使用file_get_contents或CURL獲取網頁的內容,使用正則找到“ <link rel=”shortcut icon” href=”..” />”,href里面便是favicon的文件位置,直接獲取它的內容即可。
