PHP - الحصول على فافيسون في الموقع وتحويله إلى PNG إذا لزم الأمر

StackOverflow https://stackoverflow.com/questions/1276688

سؤال

لأي موقع معين "مثال." أو فقط "domain.tld" أحتاج إلى القيام بما يلي في PHP:

  • إذا كان الموقع لديه فافيسون، احصل عليه أينما كان
    • إذا لم يكن الأمر بالفعل PNG، تحويله إلى PNG
    • احفظه على /favicons/example.domain.tld.png
  • إذا كان الموقع ليس لديه فافيسون، فلا تفعل شيئا.

أيه أفكار؟ لقد تعطلت من خلال FiVFormat غير الموثوق بها وموقع Favicons، ولكن إذا كان ذلك ممكنا، أريد تجنب تنزيل المصدر بأكمله من الصفحة باستخدام file_get_contents من أجل العثور عليه في الرؤوس. يتحول أيضا إلى PNG يبدو غير متوقع.

شكرًا،

مالا

هل كانت مفيدة؟

المحلول

كما هو الحال النموذجي، وجدت حلا مقطعا طويلا بعد وقت قصير من طرح السؤال - دع Google تقوم بالعمل من أجلك:

http://www.google.com/s2/favicons؟domain=url.

إرجاع 16x16 PNG

نصائح أخرى

وجدت هذا: http://www.controlstyle.com/articles/programming/text/php-favicon/

أنا على وشك أن أجربه لمشروعي وسأعود إلى الوراء وأخبرك إذا كان يعمل!

هتافات

IAIN.

كما قال IAIN Fraser، لا يعمل فئة Favicon من ControlStyle.com مع كل حالة الاختبار.

أساسا، إذا قدمت، <link> يمكن أن تحتوي علامة أيقونة الاختصار على أنواع مختلفة عن رابط:

  • عنوان URL المطلق الكامل: http://www.domain.com/images/fav.ico
  • عنوان URL المطلق مع المخطط النسبي: //www.domain.com/images/fav.ico
  • المسار المطلق : /images/fav.ico
  • عنوان URL النسبي: ../images/fav.ico

علاوة على ذلك، يمكن أن تحتوي صفحة الويب على <base href="..." /> السمة التي تتغير كيفية التعامل مع عنوان URL النسبي ومسار Obsoute ...

لذلك لقد كتبت فئة PHP التي تعمل مع كل هذه الحالات. أولا، يحاول الحصول على عنوان URL Favicon من <link> السمة، وتراجع إلى فافيسون URI الافتراضي (//www.domain.com/favicon.ico) في حالة الفشل.

يمكنك الاستيلاء عليها على موقع الويب الخاص بي هنا: http://www.finalclap.com/faq/477-php-favicon-find-download. أو تثبيته باستخدام الملحن: 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";
}
?>

تغطية PNG ليست صعبة.

لا أحصل على السؤال بالكامل، هل هذه أيقونة الصوت العربي الحر على موقعك أو على مواقع أخرى؟ إذا كان عليك في مواقع أخرى، فسيتعين عليك تحليل HTML جلب ثم قم بتحميل Favicon بطريقة أو بأخرى.

إذا لم تكن Favicon موجودة في /favicon.ico أعتقد أن عليك تحليل HTML.

للكشف عن النمط، يمكنك استخدام هذا التمديد, ، الذي يكتشف الملف filetype باستخدام البايت السحرية.

يمكنك تحويلها إلى PNG باستخدام مكتبة GD، يمكن العثور على مثال هنا.

إذا كان تثبيت PHP الخاص بك يتضمن مكتبة GD، فيمكنك تحويل صورة إلى PNG باستخدام imagepng. وظيفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top