2011-12-17 13 views
1

私のページの他のサイトからfaviconを表示します。ファビコンを見つける - デフォルトの場所にないとき

彼らはここにいる半分の時間について:

hostname.com/favicon.ico 

しかし、彼らはありません、他の半分。私のサイトでは、このような.icoファイルにリンクしています。 FAVICONはパスの単なるPHP定義です。

<link rel="SHORTCUT ICON" href="<?php echo FAVICON ?>" /> 

htmlのリンクを使用してサイトのファビコンのURLを取得するにはどうすればよいですか?

これはsiteです。これは、あなたがfaviconを必要とするドメインを入力すると、このようなGoogle検索を行うことができます。

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

これは1つの解決策ですが、パスからhtmlを読み取るだけでは効率的ではありません。

私はGoogleが.PNG形式に「ALL」のアイコンをキャッシュし、それらを検索可能だと思う -

このsite

+0

可能重複:http://stackoverflow.com/questions/1276688/php-getting-a-sites-favicon-and-converting-it-to-png-if-necessary – CodeJoust

答えて

3

ごとのAjaxを使用して、ページおよびプロキシページをロードします。アヤックスの場合:

// Create a request object: 
var rq = new XMLHttpRequest(); // Not IE6-compatible, by the way. 

// Set up the request: 
rq.open('GET', 'proxy.php?url=' + encodeURIComponent(thePageURL), true); 

// Handle when it's loaded: 
rq.onreadystatechange = function() { 
    if(rq.readyState === 4) { 
     // The request is complete: 
     if(rq.status < 400) { 
      // The HTML is stored in rq.responseText; you could use a regular expression to extract the favicon, like /shortcut icon.+?href="(.+?)"/i. 
     } else { 
      // There was an error fetching the page; fall back? 
     } 
    } 
}; 

とプロキシページ(おそらくいくつかのセキュリティを追加したいと思う):

<?php 
echo file_get_contents($_REQUEST['url']); 
?> 

Googleの「アヤックス」と、あなたは何をする方法に関する情報の多くを見つけることができますそのようなもの。

ページをプロキシする必要があるのは、ブラウザがターゲットから許可されていない限り、JavaScriptがAjaxリクエストを許可していないことです。これは、JavaScriptがユーザーを偽装する可能性があるため、セキュリティ上の理由によるものです。代わりに、サーバー側のスクリプトを使用してコンテンツをプロキシし、そのような問題を回避します。

+0

「ページを読み込み、プロキシページ "...あなたは何を意味していますか? –

+0

あなたは、Ajax経由でそれを引き込んだ後に、ページ全体の内容に正規表現を実行すると言います。 –

+0

実際には、ページをリモートで文字列の検索としてプロキシする必要はありません。 – CodeJoust

2

HTMLを解析するのはうんざりです。http://www.controlstyle.com/articles/programming/text/php-favicon/などのライブラリを使用したい場合は、http://www.google.com/s2/favicons?domain=domain(あなたのサーバー上のすべてのHTMLを解析する必要はありません。 1つのタグ)。あなたのサーバーにGoogleの機能のようなものが必要な場合は、上記のリンクをチェックしてください。

+0

「googleはあなたのためにやる「これが答えになるはずです。 – rcdmk

+0

そのPHPは残酷です...それはhtmlの1つのタグです... ie ... 1つの正規表現...それを見つけるために実行することができます...そしてもちろん、約8時間をfacialリンクの無数に変更して費やしますタイプ。私はちょうどgoogleのコードを使用するために団結している...彼らは最も確かにalreaydページをキャッシュしている...彼らはオーバーヘッドが発生しません。 –

関連する問題