optipic-io / optipic-cdn-php
OptiPic CDN 库,用于转换 HTML/文本数据中包含的图片 URL
Requires
- php: >=5.5.0
This package is auto-updated.
Last update: 2024-09-30 01:20:12 UTC
README
PHP 库,用于与 OptiPic.io CDN 集成(自动图片优化和压缩服务)。使用 ImgUrlConverter
类 自动转换您网站上的所有图片 URL。
| English | Español | Deutsch | Türk | Français | Italiano | Português | Polski | Čeština | Русский | Беларуская | 中国 | 日本 | বেঙ্গল | 한국인 |
如何使用
- 在 OptiPic.io 网站上注册您的账户。
- 将您的网站添加到 OptiPic CDN 控制面板。
- 从 OptiPic CDN 控制面板网站列表中获取您的网站 ID。
- 将此库下载到您的网站。
- 根据以下用例使用此库
管理区域以安装库并配置
下载此存储库中的所有代码后,您可以在浏览器中打开管理区域
https://mydomain.com/optipic-cdn-php/admin/admin.php?key=b9k7o34rnfc5kco6m7fmjrts7u
用例 #1:使用 'auto_prepend_file' php 指令自动转换图片 URL
在 auto_prepend_file
php.ini 指令中包含我们的 /optipic-cdn-php/auto_prepend_file.php
文件。
您可以在 .user.ini
或 php.ini
或 .htaccess
中完成此操作。
使用 .htaccess
的示例
php_value auto_prepend_file "<SITE_ROOT_DIRECTORY>/optipic-cdn-php/optipic-cdn-php/auto_prepend_file.php"
使用 php.ini
或 .user.ini
的示例
; Automatically add files before PHP document.
; https://php.ac.cn/auto-prepend-file
auto_prepend_file = <SITE_ROOT_DIRECTORY>/optipic-cdn-php/optipic-cdn-php/auto_prepend_file.php
使用 auto_prepend_file
php 指令的限制
一些主机只允许您在请求支持的情况下设置 auto_prepend_file
。
此类主机的示例
- ukraine.com.ua (https://www.ukraine.com.ua/wiki/hosting/php/auto_prepend_file/)
用例 #2:使用您网站的入口点 php 脚本自动转换图片 URL
您可以在您网站的入口点(例如 /index.php
)顶部包含我们的一行转换器。
require_once __DIR__.'/optipic-cdn-php/optipic-cdn-php/ImgUrlConverter.php'; ob_start(array('\optipic\cdn\ImgUrlConverter', 'convertHtml')); .... <YOUR ENTRY POINT LOGIC> ....
用例 #3:在您的代码中手动使用库的转换函数
您可以使用我们的库在项目中精确地转换您想要的图片 URL,以转换包含图片 URL 的整个 HTML 块。
$converterOptiPic = new \optipic\cdn\ImgUrlConverter(array( 'site_id' => 99999999, // your SITE ID from CDN OptiPic controll panel 'domains' => array('mydomain.com', 'www.mydomain.com'), // list of domains should replace to cdn.optipic.io 'exclusions_url' => array('/test/test/index.php',), // list of URL exclusions - where is URL should not converted 'whitelist_img_urls' => array(), // whitelist of images URL - what should to be converted (parts or full urls start from '/') 'srcset_attrs' => array('srcset', 'data-srcset'), // tag's srcset attributes // @see https://mdn.org.cn/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images )); $htmlConverted = $converterOptiPic->convertHtml($html);
配置
选项 #1:在库根目录中使用 config.php 文件
文件格式
return array( 'site_id' => '0', // your SITE ID from CDN OptiPic controll panel 'domains' => array(), // list of domains should replace to cdn.optipic.io 'exclusions_url' => array(), // list of URL exclusions - where is URL should not converted 'whitelist_img_urls' => array(), // whitelist of images URL - what should to be converted (parts or full urls start from '/') 'srcset_attrs' => array('srcset', 'data-srcset'), // tag's srcset attributes // @see https://mdn.org.cn/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images );
在这种情况下,配置将自动加载到 auto_prepend_file.php
中。
选项 #2:使用 ImgUrlConverter::loadConfig();
// Autoload config from config.php ImgUrlConverter::loadConfig(); // Load config from custom config file ImgUrlConverter::loadConfig('<path-to-your-config-file.php>'); // Load config from array ImgUrlConverter::loadConfig(array( 'site_id' => '0', // your SITE ID from CDN OptiPic controll panel 'domains' => array(), // list of domains should replace to cdn.optipic.io 'exclusions_url' => array(), // list of URL exclusions - where is URL should not converted 'whitelist_img_urls' => array(), // whitelist of images URL - what should to be converted (parts or full urls start from '/') 'srcset_attrs' => array('srcset', 'data-srcset'), // tag's srcset attributes // @see https://mdn.org.cn/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images ));
选项 #3:将配置数据传递给 ImgUrlConverter::__constructor();
$converterOptiPic = new \optipic\cdn\ImgUrlConverter(array( 'site_id' => 99999999, // your SITE ID from CDN OptiPic controll panel 'domains' => array('mydomain.com', 'www.mydomain.com'), // list of domains should replace to cdn.optipic.io 'exclusions_url' => array('/test/test/index.php',), // list of URL exclusions - where is URL should not converted 'whitelist_img_urls' => array(), // whitelist of images URL - what should to be converted (parts or full urls start from '/') ));
选项 #1:在库根目录中使用 config.php 文件
将被转换的内容(示例)
<img src="/foo/bar/img.png"/> ---CONVERT--> <img src="//cdn.optipic.io/site-99999999/foo/bar/img.png"/>
<img data-src="/foo/bar/img.png"/> ---CONVERT--> <img data-src="//cdn.optipic.io/site-99999999/foo/bar/img.png"/>
<img foo-bar-attr='/foo/bar/img.png'/> ---CONVERT--> <img foo-bar-attr='//cdn.optipic.io/site-99999999/foo/bar/img.png'/>
backhround: url(/foo/bar/img.jpg) ---CONVERT--> backhround: url(//cdn.optipic.io/site-99999999/foo/bar/img.jpg)
backhround: url("/foo/bar/img.jpg") ---CONVERT--> backhround: url("//cdn.optipic.io/site-99999999/foo/bar/img.jpg")
backhround: url('/foo/bar/img.jpg') ---CONVERT--> backhround: url('//cdn.optipic.io/site-99999999/foo/bar/img.jpg')
<img src="http://mydomain.com/foo/bar/img.png"/> ---CONVERT--> <img src="//cdn.optipic.io/site-99999999/foo/bar/img.png"/>
<img data-src="http://mydomain.com/foo/bar/img.png"/> ---CONVERT--> <img data-src="//cdn.optipic.io/site-99999999/foo/bar/img.png"/>
<img foo-bar-attr='http://mydomain.com/foo/bar/img.png'/> ---CONVERT--> <img foo-bar-attr='//cdn.optipic.io/site-99999999/foo/bar/img.png'/>
backhround: url(http://mydomain.com/foo/bar/img.jpg) ---CONVERT--> backhround: url(//cdn.optipic.io/site-99999999/foo/bar/img.jpg)
backhround: url("http://mydomain.com/foo/bar/img.jpg") ---CONVERT--> backhround: url("//cdn.optipic.io/site-99999999/foo/bar/img.jpg")
backhround: url('http://mydomain.com/foo/bar/img.jpg') ---CONVERT--> backhround: url('//cdn.optipic.io/site-99999999/foo/bar/img.jpg')
<img src="https://mydomain.com/foo/bar/img.png"/> ---CONVERT--> <img src="//cdn.optipic.io/site-99999999/foo/bar/img.png"/>
<img data-src="https://mydomain.com/foo/bar/img.png"/> ---CONVERT--> <img data-src="//cdn.optipic.io/site-99999999/foo/bar/img.png"/>
<img foo-bar-attr='https://mydomain.com/foo/bar/img.png'/> ---CONVERT--> <img foo-bar-attr='//cdn.optipic.io/site-99999999/foo/bar/img.png'/>
backhround: url(https://mydomain.com/foo/bar/img.jpg) ---CONVERT--> backhround: url(//cdn.optipic.io/site-99999999/foo/bar/img.jpg)
backhround: url("https://mydomain.com/foo/bar/img.jpg") ---CONVERT--> backhround: url("//cdn.optipic.io/site-99999999/foo/bar/img.jpg")
backhround: url('https://mydomain.com/foo/bar/img.jpg') ---CONVERT--> backhround: url('//cdn.optipic.io/site-99999999/foo/bar/img.jpg')
<img src="https://NOTmydomain.com/foo/bar/img.png"/> ---CONVERT--> <img src="https://NOTmydomain.com/foo/bar/img.png"/>
<img data-src="https://NOTmydomain.com/foo/bar/img.png"/> ---CONVERT--> <img data-src="https://NOTmydomain.com/foo/bar/img.png"/>
<img foo-bar-attr='https://NOTmydomain.com/foo/bar/img.png'/> ---CONVERT--> <img foo-bar-attr='https://NOTmydomain.com/foo/bar/img.png'/>
backhround: url(https://NOTmydomain.com/foo/bar/img.jpg) ---CONVERT--> backhround: url(https://NOTmydomain.com/foo/bar/img.jpg)
backhround: url("http://NOTmydomain.com/foo/bar/img.jpg") ---CONVERT--> backhround: url("http://NOTmydomain.com/foo/bar/img.jpg")
backhround: url('https://NOTmydomain.com/foo/bar/img.jpg') ---CONVERT--> backhround: url('https://NOTmydomain.com/foo/bar/img.jpg')
更多现场示例请查看 /examples/example.php
脚本。
不同主机上的 php.ini
位置
Beget
<SITE_ROOT_DIRECTORY>/cgi-bin/php.ini
Reg.ru
如果不起作用,您也可以在网站的根目录中创建/编辑 .user.ini
文件 - 这是 php.ini 文件的替代品。[链接](https://php.ac.cn/manual/en/configuration.file.per-user.php)
ionCube
警告
如果您在网站上使用 ionCube,则不应在 php 设置中添加 auto_prepend_file
指令。ionCube
不支持 auto_prepend_file
指令,并[引发错误](https://www.ioncube.com/sa/gui_docs/settings_restrictions.html)。
相反,如上所述,直接将 OptiPic 连接添加到您网站的入口点(通常是 index.php)。
针对 ImageCMS
的示例(它使用 ionCube
)
在 index.php
中插入 OptiPic 逻辑,在包含 core/CodeIgniter.php
之前
// OptiPic // -------------------------------------------------------------------- if(php_sapi_name() !== 'cli') { require_once __DIR__.'/optipic-cdn-php/optipic-cdn-php/ImgUrlConverter.php'; ob_start(array('\optipic\cdn\ImgUrlConverter', 'convertHtml')); } // -------------------------------------------------------------------- /* * -------------------------------------------------------------------- * LOAD THE BOOTSTRAP FILE * -------------------------------------------------------------------- * * And away we go... * */ require_once BASEPATH . 'core/CodeIgniter.php';
根据您的 CMS 推荐排除哪些 URL
Wordpress
/wp-admin/*
Bitrix
/bitrix/*
Joomla
/administrator/*
Drupal
/en/admin/*
/ru/admin/*
/<YOUR_LANG>/admin/*
MODX
/manager/*
OpenCart
/admin/*
HostCMS
/admin/*
其他 CMS
使用 *
结尾的掩码排除您的 CMS 管理区域(控制面板)文件夹,以排除所有嵌套 URL