Domanda

Per ogni sito dato "example.domain.tld" o semplicemente "domain.tld" Ho bisogno di fare quanto segue in PHP:

  • Se il sito ha una favicon, farlo ovunque si trovi
    • Se non è già un PNG, convertirlo in PNG
    • salvarlo /favicons/example.domain.tld.png
  • Se il sito non ha favicon, non fare nulla.

Tutte le idee? Mi viene perplesso dal fileformat inaffidabile e la posizione delle favicon, ma se possibile vorrei evitare di scaricare l'intera sorgente della pagina con file_get_contents al fine di trovare nelle intestazioni. Anche la conversione in png sembra banale.

Grazie,

Mala

È stato utile?

Soluzione

Come è tipico, ho trovato una soluzione percorribile poco dopo ponendo la domanda - lasciare che Google faccia il lavoro per voi:

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

restituisce un 16x16 png

Altri suggerimenti

Ho trovato questo: http://www.controlstyle.com/articles / programmazione / text / php-favicon /

Sto per provare per il mio progetto e mi riferire e dirvi se funziona!

Saluti

Iain

Come ha detto Iain Fraser, la classe Favicon da controlstyle.com non funziona con tutti i test case.

In sostanza, se previsto, il tag <link> icona di collegamento può contenere diversi tipi di URL:

  • URL completo assoluto: http://www.domain.com/images/fav.ico
  • URL assoluto con lo schema relativo: //www.domain.com/images/fav.ico
  • percorso assoluto: /images/fav.ico
  • URL relativo: ../images/fav.ico

Inoltre, la pagina web può contenere un attributo <base href="..." /> che cambia come affrontare URL relativo e il percorso absoute ...

Così ho scritto una classe PHP che funziona con tutti questi casi. In primo luogo, si cerca di ottenere l'URL favicon dall'attributo <link>, e ripiego al default favicon URI (//www.domain.com/favicon.ico) in caso di guasto.

È possibile prendere sul mio sito web qui: http: // www .finalclap.com / faq / 477-php-favicon-trovare-download o installarlo utilizzando compositore:. composer require vincepare/favicon-downloader

Come usare:

<?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 in PNG non è così difficile.

Non capisco la questione del tutto, è questa icona fav sul tuo sito o su altri siti? Se su altri siti, si dovrà analizzare inverosimile HTML e quindi in qualche modo caricare favicon.

Se la favicon, non si trova in /favicon.ico Credo che bisogna analizzare il codice HTML.

Per la rilevazione tipo di file, è possibile utilizzare questo estensione, che rileva il tipo di file utilizzando byte magici .

È possibile convertire in PNG utilizzando la libreria GD, un esempio può essere trovato qui .

Se installare il PHP include la libreria GD, è possibile convertire un'immagine in un file PNG utilizzando il funzione imagepng .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top