7

特定のサイト「example.domain.tld」または単に「domain.tld」について、PHPで次のことを行う必要があります。

  • サイトにファビコンがある場合は、どこにいても取得できます
    • まだ PNG でない場合は、PNG に変換します。
    • /favicons/example.domain.tld.png に保存します
  • サイトにファビコンがない場合は、何もしません。

何か案は?信頼できないファイル形式とファビコンの場所に困惑していますが、可能であれば、ヘッダーで見つけるために file_get_contents を使用してページのソース全体をダウンロードすることは避けたいと考えています。また、pngへの変換は自明ではないようです。

ありがとう、

マラ

4

6 に答える 6

26

よくあることですが、質問をした直後にまずまずの解決策を見つけました-Googleに任せてください:

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

16x16 の png を返します

于 2009-08-14T09:19:39.907 に答える
4

これを見つけました: http://www.controlstyle.com/articles/programming/text/php-favicon/

私は自分のプロジェクトでそれを試してみようとしています。うまくいくかどうかを報告します!

乾杯

イアン

于 2010-08-16T06:42:23.017 に答える
2

Iain Fraser が言ったように、controlstyle.com の Favicon クラスはすべてのテスト ケースで機能するわけではありません。

基本的に、提供されている場合、<link>ショートカット アイコン タグにはさまざまな URL タイプを含めることができます。

  • 完全な絶対 URL :http://www.domain.com/images/fav.ico
  • 相対スキームを使用した絶対 URL ://www.domain.com/images/fav.ico
  • 絶対パス:/images/fav.ico
  • 相対 URL :../images/fav.ico

さらに、Web ページには、<base href="..." />相対 URL と絶対パスの処理方法を変更する属性を含めることができます...

そこで、これらすべてのケースで動作する PHP クラスを作成しました。最初に、属性からファビコン URL を取得しようとし<link>、失敗した場合はデフォルトのファビコン URI (//www.domain.com/favicon.ico) にフォールバックします。

私のウェブサイトhttp://www.finalclap.com/faq/477-php-favicon-find-downloadまたは composer を使用してインストールできますcomposer require vincepare/favicon-downloader

使い方 :

<?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";
}
?>
于 2014-03-31T20:12:19.237 に答える
0

ファビコンが /favicon.ico にない場合は、HTML を解析する必要があると思います。

ファイルタイプの検出には、マジック バイトを使用してファイル タイプを検出するこの拡張子を使用できます。

GD ライブラリを使用して PNG に変換できます。例はここにあります。

于 2009-08-14T09:02:34.823 に答える
0

PNG への変換はそれほど難しくありません。

このお気に入りのアイコンはあなたのサイトにあるのですか、それとも他のサイトにあるのですか? 他のサイトの場合は、取得した HTML を解析してから、何らかの方法でファビコンを読み込む必要があります。

于 2009-08-14T09:03:48.987 に答える
0

PHP インストールに GD ライブラリが含まれている場合は、imagepng関数を使用して画像を PNG に変換できます。

于 2009-08-14T09:08:02.443 に答える