Favicon::fetch
PHP
Favicon по адресу ресурса —
class Favicon {
public static function fetch($url) {
if (stripos($url, 'http') !== 0) $url = 'http://' . $url;
if (preg_match('/^https?:\/\/[^\/]+$/', $url)) $url .= '/';
$urls = array();
if ($page = @file_get_contents($url)) {
if (preg_match('/<link\s(.+?\b(?:shortcut\s)?icon\b.+?)\/?>/i',
$page, $matches)) {
$link = $matches[1];
if (preg_match('/href.+?[\'"]([^\'"]+)/i', $link, $matches))
$urls[] = $matches[1];
}
}
$urls[] = '/favicon.ico';
preg_match('/^(https?:\/\/[^\/]+)(\/(?:.+\/)?)/', $url, $matches);
$host = $matches[1];
$path = $matches[2];
for ($i = 0; $i < count($urls); ++$i) {
if (!preg_match('/^https?:\/\//', $urls[$i])) {
if (strpos($urls[$i], '/') === 0) {
$urls[$i] = $host . $urls[$i];
} else {
$urls[$i] = $host . $path . $urls[$i];
}
}
}
$urls = array_unique($urls);
foreach ($urls as $favicon) {
$image = imagecreatefromico($favicon);
if ($image) return $image;
}
return false;
}
private function __construct() {}
}
