As Iain Fraser said, the Favicon class from controlstyle.com doesn't works with all test case.
Basically, if provided, the <link>
shortcut icon tag can contain different URL types :
- full absolute URL :
http://www.domain.com/images/fav.ico
- absolute URL with relative scheme :
//www.domain.com/images/fav.ico
- absolute path :
/images/fav.ico
- relative URL :
../images/fav.ico
Furthermore, the web page can contain a <base href="..." />
attribute that changes how to deal with relative URL and absoute path...
So I've written a PHP class that works with all these cases.
First, it tries to get the favicon URL from the <link>
attribute, and fallback to the default favicon URI (//www.domain.com/favicon.ico) in case of failure.
You can grab it on my website here : http://www.finalclap.com/faq/477-php-favicon-find-download or install it using composer : composer require vincepare/favicon-downloader
.
How to use :
<?php
require 'FaviconDownloader.class.php';
$favicon = new FaviconDownloader('http://stackoverflow.com/questions/19503326/bug-with-chrome-tabs-create-in-a-loop');
if($favicon->icoExists){
echo "Favicon found : ".$favicon->icoUrl."\n";
// Saving favicon to file
$filename = 'favicon-'.time().'.'.$favicon->icoType;
file_put_contents($filename, $favicon->icoData);
echo "Saved to ".$filename."\n\n";
} else {
echo "No favicon for ".$favicon->url."\n\n";
}
?>