2010-01-02 8 views
8

Ich möchte vorgestellte Websites auf meiner Website auflisten und ich dachte, es wäre cool, ihr Favicon zu ehren und zu verwenden. Wie bekomme ich es von der Domain für eine beliebige URL in JSP oder XSLT? Ich kann PHP oder Javascript auslösen, aber XSLT ist die bevorzugte Methode.Wie kann ich das Favicon einer Website abrufen?

+2

ein Favicon bekommen man dies nutzen: http://www.google.com/s2/favicons?domain=domain_name –

Antwort

17

Um das Favicon einer Website zu erhalten, müssen Sie eine der folgenden Aktionen den Index HTML jeder vorgestellten Website und überprüfen laden:

HTML:

<link rel="icon" type="image/vnd.microsoft.icon" href="http://example.com/image.ico"> 
<link rel="icon" type="image/png" href="http://example.com/image.png"> 
<link rel="icon" type="image/gif" href="http://example.com/image.gif"> 

XHTML:

<link rel="icon" type="image/vnd.microsoft.icon" href="/somepath/image.ico" /> 
<link rel="icon" type="image/png" href="/somepath/image.png" /> 
<link rel="icon" type="image/gif" href="/somepath/image.gif" /> 

Internet Explorer kann ein etwas anderes Format verwenden:

<link rel="SHORTCUT ICON" href="http://www.example.com/myicon.ico" /> 

Beachten Sie außerdem, dass die meisten HTML-Browser keinen HTML-Link benötigen, um ein Favicon abzurufen. Wenn keine der oben genannten Verweise gefunden wird, sollten Sie auch im Dokumentstammverzeichnis der Website nach favicon.ico suchen.

Mit PHP ist es einfach, den HTML-Inhalt einer Web-Seite zu erhalten, indem file_get_contents($url) mit:

$url = 'http://www.exmaple.com'; 
$output = file_get_contents($url); 
+2

EXCELLENT! Danke für das Detail Daniel. Ich werde das PHP-Tutorial ausprobieren und Sie wissen lassen, wie es funktioniert. – mobibob

0

Hier bei ist es. Es nutzt verschiedene Strategien rund um die vielen möglichen Fälle zu arbeiten:

<? 
/* 
    nws-favicon : Get site's favicon using various strategies 

    This script is part of NWS 
    https://github.com/xaccrocheur/nws/ 

*/ 


function CheckImageExists($imgUrl) { 
    if (@GetImageSize($imgUrl)) { 
     return true; 
    } else { 
     return false; 
    }; 
}; 

function getFavicon ($url) { 

$fallback_favicon = "/var/www/favicon.ico";  
// $fallback_favicon = "http://stackoverflow.com/favicon.ico"; 


    $dom = new DOMDocument(); 
    @$dom->loadHTML($url); 
    $links = $dom->getElementsByTagName('link'); 
    $l = $links->length; 
    $favicon = "/favicon.ico"; 
    for($i=0; $i<$l; $i++) { 
     $item = $links->item($i); 
     if(strcasecmp($item->getAttribute("rel"),"shortcut icon") === 0) { 
      $favicon = $item->getAttribute("href"); 
      break; 
     } 
    } 

    $u = parse_url($url); 

    $subs = explode('.', $u['host']); 
    $domain = $subs[count($subs) -2].'.'.$subs[count($subs) -1]; 

    $file = "http://".$domain."/favicon.ico"; 
    $file_headers = @get_headers($file); 

    if($file_headers[0] == 'HTTP/1.1 404 Not Found' || $file_headers[0] == 'HTTP/1.1 404 NOT FOUND' || $file_headers[0] == 'HTTP/1.1 301 Moved Permanently') { 

     $fileContent = @file_get_contents("http://".$domain); 

     $dom = @DOMDocument::loadHTML($fileContent); 
     $xpath = new DOMXpath($dom); 

     $elements = $xpath->query("head/link//@href"); 

     $hrefs = array(); 

     foreach ($elements as $link) { 
      $hrefs[] = $link->value; 
     } 

     $found_favicon = array(); 
     foreach ($hrefs as $key => $value) { 
      if(substr_count($value, 'favicon.ico') > 0) { 
       $found_favicon[] = $value; 
       $icon_key = $key; 
      } 
     } 

     $found_http = array(); 
     foreach ($found_favicon as $key => $value) { 
      if(substr_count($value, 'http') > 0) { 
       $found_http[] = $value; 
       $favicon = $hrefs[$icon_key]; 
       $method = "xpath"; 
      } else { 
       $favicon = $domain.$hrefs[$icon_key]; 
       if (substr($favicon, 0, 4) != 'http') { 
        $favicon = 'http://' . $favicon; 
        $method = "xpath+http"; 
       } 
      } 
     } 

     if (isset($favicon)) { 
      if (!CheckImageExists($favicon)) { 
       $favicon = $fallback_favicon; 
       $method = "fallback"; 
      } 
     } else { 
      $favicon = $fallback_favicon; 
      $method = "fallback"; 
     } 

    } else { 
     $favicon = $file; 
     $method = "classic"; 

     if (!CheckImageExists($file)) { 
      $favicon = $fallback_favicon; 
      $method = "fallback"; 
     } 

    } 
    return $favicon; 
} 

?> 
0

Öffnen Sie den Seitenquellcode (Rechtsklick Seitenquelle anzeigen) Suchen Sie die unten angegebene Zeile, klicken Sie auf den Link images/favicon.png.

<link rel="icon" href="images/favicon.png" type="image/png" sizes="16x16"> 
Verwandte Themen