PHP - Bir sitenin favicon alma ve gerekirse png için dönüştürme

6 Cevap php

Herhangi bir site "example.domain.tld" ya da sadece "alanadı.tld" için ben PHP aşağıdakileri yapmanız gerekir:

  • If the site has a favicon, get it wherever it is
    • Zaten bir PNG değilse, PNG dönüştürmek
    • / Faviconları / example.domain.tld.png kaydedin
  • Site hiçbir favicon varsa, hiçbir şey yok.

Herhangi bir fikir? Ben güvenilmez FileFormat ve faviconları yere göre Koçan, ancak oluyorum mümkünse ben başlıklarında bulmak için file_get_contents ile sayfanın tamamını kaynağını indirirken önlemek istiyorsanız. Ayrıca png dönüştürmek nontrivial görünüyor.

Teşekkürler,

Mala

6 Cevap

Tipik olarak, kısa bir süre soruyu sorduktan sonra yeterli bir çözüm buldu - google sizin için çalışma yapalım:

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

16x16 png döndürür

Bu bulundu: http://www.controlstyle.com/articles/programming/text/php-favicon/

Benim proje için denemek üzereyim ve ben rapor ve eğer çalışırsa size söyleyeyim!

Şerefe

Iain

PNG coverting o kadar da zor değildir.

Ben tamamen soruyu alamadım, sitenizde veya başka sitelerde bu fav simgesi? Diğer sitelerde ise, zorlama HTML ayrıştırmak ve sonra bir şekilde favicon yüklemek zorunda olacak.

Favicon / favicon.ico yer değilse ben size HTML ayrıştırmak zorunda sanırım.

Filetype tespiti için, sihirli bayt kullanarak filetype algılar ki, this extension kullanabilirsiniz.

Sen GD kütüphanesini kullanarak PNG dönüştürmek, bir örnek bulunabilir here.

PHP kurulumunu GD kütüphanesini içeriyorsa, imagepng işlevini kullanarak bir PNG bir görüntü dönüştürebilirsiniz.

Iain Fraser dediği gibi, controlstyle.com gelen Favicon sınıf tüm test case ile çalışır değildir.

Temel olarak, eğer varsa, <link> kısayol simgesi etiketi farklı URL türlerini içerebilir:

  • Tam mutlak URL: http://www.domain.com/görüntüs/fav.ico
  • göreceli düzeni mutlak URL: //www.domain.com/görüntüs/fav.ico
  • Mutlak yol: /görüntüs/fav.ico
  • göreli URL: ../görüntüs/fav.ico

Ayrıca, web sayfası göreli bir URL ve absoute yolu ile nasıl başa değiştiren bir <base href="..." /> niteliğini içerebilir ...

So I've written a PHP class that works with all theses cases. First, it tries to get the favicon URL from the <link> attribute, and fallback to the default favicon URI (//www.domain.com/favicon.ico) in case of failure.

Sen benim web yakala: http://www.finalclap.com/faq/477-php-favicon-find-download

Nasıl kullanılır:

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