Php 如何通过URL获取字体并转换为Base64(数据Uri)?

Php 如何通过URL获取字体并转换为Base64(数据Uri)?,php,Php,如何通过URL获取字体并在PHP中转换为Base64(数据Uri) PHP代码: function getDataURI($fontUrl, $mime = '') { $content = get_web_page($fontUrl); $content = $content['content']; return 'data: '.(function_exists('mime_content_type') ? mime_content_type($fontUrl) : $mime).';bas

如何通过URL获取字体并在PHP中转换为Base64(数据Uri)

PHP代码:

function getDataURI($fontUrl, $mime = '') {
$content = get_web_page($fontUrl);
$content = $content['content'];
return 'data: '.(function_exists('mime_content_type') ? mime_content_type($fontUrl) : $mime).';base64,'.base64_encode($content);
}

结果:

@font-face {
font-family: 'LinotypeUniversW01-Ligh 723625';
src: url('data:font/opentype;base64,PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+IDxodG1sPjxoZWFkPiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+IDx0aXRsZT5FUlJPUjogVGhlIHJlcXVlc3RlZCBVUkwgY291bGQgbm90IGJlIHJldHJpZXZlZDwvdGl0bGU+IDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCEtLSAgICVsICBib2R5IDpsYW5nKGZhKSB7IGRpcmVjdGlvbjogcnRsOyBmb250LXNpemU6IDEwMCU7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIFJveWEsIHNhbnMtc2VyaWY7IGZsb2F0OiByaWdodDsgfSA6bGFuZyhoZSkgeyBkaXJlY3Rpb246IHJ0bDsgZmxvYXQ6IHJpZ2h0OyB9ICAtLT48L3N0eWxlPiA8L2hlYWQ+PGJvZHk+IDxkaXYgaWQ9InRpdGxlcyI+IDxoMT5FUlJPUjwvaDE+IDxoMj5UaGUgcmVxdWVzdGVkIFVSTCBjb3VsZCBub3QgYmUgcmV0cmlldmVkPC9oMj4gPC9kaXY+IDxocj4gIDxkaXYgaWQ9ImNvbnRlbnQiPiA8cD5UaGUgZm9sbG93aW5nIGVycm9yIHdhcyBlbmNvdW50ZXJlZCB3aGlsZSB0cnlpbmcgdG8gcmV0cmlldmUgdGhlIFVSTDogPGEgaHJlZj0iaHR0cDovLy8vc3RhdGljLnN0aWhsLmNvbS9qb2Jib2Vyc2UvY3NzL2ZvbnRzL2U4OTM3OWQyLTI2MDQtNDFhYi05MTFmLWNjODlmM2U0YjQ5Yi5lb3RvcGVudHlwZSI+aHR0cDovLy8vc3RhdGljLnN0aWhsLmNvbS9qb2Jib2Vyc2UvY3NzL2ZvbnRzL2U4OTM3OWQyLTI2MDQtNDFhYi05MTFmLWNjODlmM2U0YjQ5Yi5lb3RvcGVudHlwZTwvYT48L3A+ICA8YmxvY2txdW90ZSBpZD0iZXJyb3IiPiA8cD48Yj5VbmFibGUgdG8gZGV0ZXJtaW5lIElQIGFkZHJlc3MgZnJvbSBob3N0IG5hbWUgPHE+PC9xPjwvYj48L3A+IDwvYmxvY2txdW90ZT4gIDxwPlRoZSBETlMgc2VydmVyIHJldHVybmVkOjwvcD4gPGJsb2NrcXVvdGUgaWQ9ImRhdGEiPiA8cHJlPkludmFsaWQgaG9zdG5hbWU8L3ByZT4gPC9ibG9ja3F1b3RlPiAgPHA+VGhpcyBtZWFucyB0aGF0IHRoZSBjYWNoZSB3YXMgbm90IGFibGUgdG8gcmVzb2x2ZSB0aGUgaG9zdG5hbWUgcHJlc2VudGVkIGluIHRoZSBVUkwuIENoZWNrIGlmIHRoZSBhZGRyZXNzIGlzIGNvcnJlY3QuPC9wPiAgPHA+WW91ciBjYWNoZSBhZG1pbmlzdHJhdG9yIGlzIDxhIGhyZWY9Im1haWx0bzp3ZWJtYXN0ZXIlVyI+d2VibWFzdGVyPC9hPi48L3A+IDxicj4gPC9kaXY+ICA8aHI+IDxkaXYgaWQ9ImZvb3RlciI+IDxwPkdlbmVyYXRlZCBUdWUsIDI3IE1heSAyMDE0IDA4OjUxOjA2IEdNVCBieSBwcm94eTIuaW5mcmEubmV0IChzcXVpZC8yLjcuU1RBQkxFOSk8L3A+IDwhLS0gRVJSX0ROU19GQUlMIC0tPiA8L2Rpdj4gPC9ib2R5PjwvaHRtbD4g');}
但是这个代码不起作用

当我转换图像时,一切正常

谢谢你的帮助。

好的,我找到了答案:

http://snipplr.com/view.php?codeview&id=70078

 /**
 * Data URI base64 PHP function.
 * 
 * @author        Pierre-Henry Soria <ph7software@gmail.com>
 * @copyright     (c) 2012-2013, Pierre-Henry Soria. All Rights Reserved.
 * @license       Lesser General Public License (LGPL) <http://www.gnu.org/copyleft/lesser.html>
 * @param         string $sFile The path of your file to encode.
 * @return        string The encoded data in base64.
 */
function base64DataUri($sFile)
{                   

    // Switch to right MIME-type
    $sExt = strtolower(substr(strrchr($sFile, '.'), 1));

    switch($sExt)
    {
        case 'gif':
        case 'jpg':
        case 'png':
            $sMimeType = 'image/'. $sExt;
        break;

        case 'ico':
            $sMimeType = 'image/x-icon';
        break;

        case 'eot':
            $sMimeType = 'application/vnd.ms-fontobject';
        break;

        case 'otf':
        case 'ttf':
        case 'woff':
            $sMimeType = 'application/octet-stream';
        break;

        default:
            exit('Invalid extension file!');
    }

    $sBase64 = base64_encode(file_get_contents($sFile));
    return "data:$sMimeType;base64,$sBase64";
}
http://snipplr.com/view.php?codeview&id=70078
/**
*数据URI base64 PHP函数。
* 
*@作者皮埃尔·亨利·索里亚
*@版权所有(c)2012-2013,皮埃尔·亨利·索里亚。版权所有。
*@license Lesser通用公共许可证(LGPL)
*@param string$s文件要编码的文件路径。
*@return string base64中的编码数据。
*/
函数base64DataUri($sFile)
{                   
//切换到右MIME类型
$sExt=strtolower(substr(strrchr($sFile,'.')),1);
交换机($sExt)
{
案例“gif”:
案件‘jpg’:
案例“png”:
$sMimeType='image/'。$sExt;
打破
案例“ico”:
$sMimeType='image/x-icon';
打破
案例“eot”:
$sMimeType='application/vnd.ms fontobject';
打破
案例“otf”:
案例“ttf”:
案例“woff”:
$sMimeType='application/octet stream';
打破
违约:
退出('无效扩展名文件!');
}
$sBase64=base64_编码(文件获取内容($sFile));
返回“数据:$sMimeType;base64$sBase64”;
}