Question

Pour un site donné « example.domain.tld » ou simplement « domain.tld » Je dois faire ce qui suit en PHP:

  • Si le site a un favicon, obtenir là où il est
    • Si ce n'est pas déjà un PNG, convertir en PNG
    • Enregistrer à /favicons/example.domain.tld.png
  • Si le site n'a pas favicon, ne rien faire.

Toutes les idées? Je suis déconcerté par l'être fileformat peu fiable et l'emplacement des favicons, mais si possible je veux éviter de télécharger la totalité de la source de la page avec file_get_contents afin de le trouver dans les en-têtes. convertir également .png semble non négligeable.

Merci,

Mala

Était-ce utile?

La solution

Comme il est typique, j'ai trouvé une solution passable peu après avoir posé la question - laisser Google faire le travail pour vous:

http://www.google.com/s2/favicons?domain=URL

retourne un 16x16 .png

Autres conseils

Trouvé ceci: http://www.controlstyle.com/articles / programmation / text / php-favicon /

Je suis sur le point d'essayer pour mon projet et je ferai rapport et vous dire si cela fonctionne!

Vive

Iain

Comme Iain Fraser a dit, la classe favicon de controlstyle.com ne fonctionne pas avec tous les cas de test.

En gros, si elle est fournie, l'étiquette d'icône de raccourci <link> peut contenir différents types d'URL:

  • URL complète absolue: http://www.domain.com/images/fav.ico
  • URL absolue avec le schéma relatif: //www.domain.com/images/fav.ico
  • chemin absolu: /images/fav.ico
  • URL relative: ../images/fav.ico

En outre, la page Web peut contenir un attribut <base href="..." /> qui change la façon de traiter avec l'URL relative et chemin absoute ...

J'ai écrit une classe PHP qui fonctionne avec tous ces cas. Tout d'abord, il tente d'obtenir l'URL de favicon de l'attribut <link> et fallback à l'URI favicon par défaut (de //www.domain.com/favicon.ico) en cas d'échec.

Vous pouvez le saisir sur mon site ici: http: // www .finalclap.com / faq / 477-php-favicon-find-télécharger ou l'installer à l'aide compositeur. composer require vincepare/favicon-downloader

Comment utiliser:

<?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";
}
?>

coverting en PNG est pas difficile.

Je ne comprends pas la question tout à fait, est cette icône fav sur votre site ou sur d'autres sites? Si sur d'autres sites, vous devrez analyser HTML et tiré par les cheveux puis en quelque sorte charger favicon.

Si le favicon ne se trouve pas à /favicon.ico Je suppose que vous devez analyser le code HTML.

Pour la détection de filetype, vous pouvez utiliser cette extension , qui détecte le type de fichier en utilisant octets magiques .

Vous pouvez convertir en PNG en utilisant la bibliothèque GD, se trouve un exemple .

Si votre installation de PHP inclut la bibliothèque GD, vous pouvez convertir une image en format PNG en utilisant imagepng fonction .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top