<?php
/**
* 将base64字符串创建为图片文件
* @param string $base64 base64原始字符串
* @param string $path 保存文件的目录
* @param string $filename 文件名(不要带格式后缀)
* @return array 成功:state 1 filename:返回的文件名 失败:state 2 err:返回详细错误
*/
function createBase64($base64, $path, $filename)
{
$res = [];
//匹配base64字符串格式
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64, $result))
{
//保存最终的图片格式
$postfix = $result[2];
$base64 = base64_decode(substr(strstr($base64, ','), 1));
$filename = $filename . '.' . $postfix;
$path = $_SERVER["DOCUMENT_ROOT"] . $path . $filename;
//创建图片
if (file_put_contents($path, $base64))
{
$res['state'] = 1;
$res['filename'] = $filename;
}
else
{
$res['state'] = 2;
$res['err'] = 'Create img failed!';
}
}
else
{
$res['state'] = 2;
$res['err'] = 'Not base64 char!';
}
return $res;
}
//前端传来的base64,ajax发送的base64请不要做任何处理
$base64 = $_POST['base64'];
var_dump($base64);
//返回结果state=1的时候就是成功,错误信息在err中
var_dump(createBase64($base64, '/', 'girl')); php官方已经提供了Iterator(迭代器)接口,通过网上资料的学习,目前看适合超大集合或者数组提取使用。学习一个函数的实现对比内存占用差距.使用迭代器和普通循环实现range()函数。(1).普通循环实现range()函数。function newrange($low, $h...
逛公众号文章看到文章"php实现事件监听与触发的方法,你用过吗?",我就好奇了,php又不是asp.net的webform,哪里来的服务端事件监听。于是学习了一波。先看下监听类:class Event { /** &nbs...
(1).学习目标: 了解常见信号类型(百度PHP支持的信号类型),(2).相关函数学习: (2.1).pcntl_signal函数用于设置一个信号管理器接收进程信号,参数1:信号类型,参数2:回调函数,用于在接收到参数1类型的信...
<?php /** * @throws Exception */ function curl() { throw new \Exception('err...
自己的composer已经发布到packagist,但是无法使用composer require easy-task/easy-task来安装,只能在配置文件使用如下方式安装:"require": { "easy...
第一次听说端口复用是在mixphp最新版本中发现的,mixphp启动监听9501端口,现在作者说可以多开几个进程来执行mixphp,我心里想了下再启动不是会端口冲突嘛,但是却没有问题,于是下载mixphp的源码解读,原来是启动http服务器使用new Co\Http\Server('0.0....