Pregunta

Para cualquier "example.domain.tld" sitio determinado o simplemente "domain.tld" Tengo que hacer lo siguiente en PHP:

  • Si el sitio tiene un favicon, conseguirlo dondequiera que se encuentre
    • Si no está ya en formato PNG, convertirlo a PNG
    • guardarlo en /favicons/example.domain.tld.png
  • Si el sitio no tiene favicon, no hacer nada.

¿Alguna idea? Estoy siendo confundido por el formato de archivo fiable y ubicación de los iconos de página, pero si es posible quiero evitar la descarga de toda la fuente de la página con file_get_contents con el fin de encontrar en las cabeceras. También la conversión a PNG parece trivial.

Gracias,

Mala

¿Fue útil?

Solución

Como es típico, he encontrado una solución aceptable, poco después de hacer la pregunta - Deja que Google haga el trabajo por usted:

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

devuelve un 16x16 png

Otros consejos

Encontrados esto: http://www.controlstyle.com/articles / programación / texto / php-favicon /

Estoy a punto de probarlo por mi proyecto y Voy a informar y digo que si funciona!

Saludos

Iain

Como dijo Iain Fraser, la clase de Favicon controlstyle.com no funciona con todos los casos de prueba.

Básicamente, si se proporciona, la etiqueta <link> icono de acceso directo puede contener diferentes tipos de URL:

  • completo URL absoluta: http://www.domain.com/images/fav.ico
  • URL absoluta con el esquema relativo: //www.domain.com/images/fav.ico
  • ruta absoluta: /images/fav.ico
  • URL relativa: ../images/fav.ico

Además, la página web puede contener un atributo <base href="..." /> que cambia cómo tratar con dirección URL relativa y la ruta absoute ...

Así que he escrito una clase PHP que funciona con todos estos casos. En primer lugar, trata de obtener la URL favicon del atributo <link>, y vuelve a los URI por defecto el favicon (//www.domain.com/favicon.ico) en caso de fallo.

Usted puede agarrar en mi sitio web aquí: http: // www .finalclap.com / Preguntas / 477-php-favicon-find-descarga o instalarlo usando compositor:. composer require vincepare/favicon-downloader

Modo de empleo:

<?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 a PNG no es tan difícil.

No entiendo la cuestión en su totalidad, es este icono favorito en su sitio o en otros sitios? Si en otros sitios, que tendrá que analizar HTML descabellada y luego cargar alguna manera favicon.

Si el favicon no se encuentra en /favicon.ico supongo que hay que analizar el código HTML.

Para la detección de tipo de archivo, puede utilizar este extensión, que detecta el tipo de archivo mediante el uso de bytes mágicos .

Puede convertir a PNG mediante el uso de la biblioteca GD, un ejemplo se puede encontrar aquí .

Si su instalación de PHP incluye la librería GD, puede convertir una imagen a un archivo PNG utilizando el función imagepng .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top