jerrybendy/get-favicon

使用 PHP 获取网站 Favicon 图标的简单方法

v2.2.3 2016-07-26 14:54 UTC

This package is not auto-updated.

Last update: 2024-09-26 00:27:40 UTC


README

获取网站的 Favicon 图标并在您的网页上显示。

Latest Stable Version Latest Unstable Version Total Downloads License

使用方法

1. 将 jerrybendy/get-favicon 添加到您的 composer.json 文件中

在命令行中执行

composer require jerrybendy/get-favicon

2. 使用以下方式获取网站图标

<?php
require "vendor/autoload.php";

$favicon = new \Jerrybendy\Favicon\Favicon;

/**
 * 获取图标并显示在浏览器上
 */
$favicon->getFavicon('http://blog.icewingcc.com', false);

示例代码请参见 demo/basic-usage.php

其他用法

默认图标

默认图标用于在线获取图标失败时返回一个指定的图标文件作为代替。如果没有指定默认图标,系统将会在获取失败时返回一个 JSON 字符串。

$favicon = new \Jerrybendy\Favicon\Favicon;

$favicon->setDefaultIcon('default-icon.png');

文件映射

文件映射主要用于针对某些网站进行特殊处理(例如无法访问的网站),如果网址能够匹配某个预设的规则,就返回指定的图标资源。

文件映射的 setFileMap 函数接收一个数组作为参数,数组的键必须是正则表达式,值则可以对应到一个本地文件或网络文件的路径,你需要保证这个文件是可以正常读取的。

多个匹配规则会按顺序从上到下依次尝试匹配,并在第一次匹配成功后返回。

$favicon = new \Jerrybendy\Favicon\Favicon;

$favicon->debug_mode = TRUE;

$favicon->setFileMap(array(
    '/www\.google\.com/i'   => 'http://www.baidu.com/favicon.ico',
    '/www\.facebook\.com/i' => 'cache/facebook.png',
));

$favicon->getFavicon('https://www.google.com', false);

在上面的例子中,如果输入的网址匹配了 /www\.google\.com/i 规则,将会返回百度的图标;如果匹配了 /www\.facebook\.com/i 规则将会读取本地已经存在的 facebook.png 文件。

使用缓存

formatUrl 方法返回一个格式化后的完整的 URL 字符串,可以被用作缓存的键名。 Favicon 类中没有内置任何缓存的实现,所以需要自己根据实际情况选择不同的缓存方式。

getFavicon 也可以接收可选的第二个参数,默认值是 FALSE 表示直接输出获取到的图标到浏览器。设置成 TRUE 可以强制返回二进制数据而不显示,以方便在外部做缓存之类的操作。

demo/use-cache.php 中的示例代码演示了如何添加和使用缓存。

调试模式

打开调试模式将会在系统的错误日志中输出一些信息,可以用来查看程序的运行时间、资源占用以及读取图标的来源等信息。因为输出是通过 PHP 内置的 error_log 函数实现的,所以可能需要通过 PHP 系统的错误日志去查看,或者 php_error.log 中。如果是用命令行 php -S 参数启动可以直接在控制台中看到日志内容。

打开调试模式:

$favicon = new \Jerrybendy\Favicon\Favicon;

$favicon->debug_mode = TRUE;

许可证

MIT 许可证 (MIT)

版权所有 (c) 2015 Jerry Bendy

本软件及相关的文档文件(以下简称“软件”)的副本由任何个人获得后,特此免费授予,无需支付费用,可以不受限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向该软件提供副本的个人这样做,前提是必须遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论是由合同、侵权或其他方式引起的,无论是因使用软件或与其使用有关或与之相关。