平时自己开发的时候,为了图方便,会把经常用到的一些操作写成一个公共的函数来方便后面调用。
lay_page
layui的table快速返回数据。thinkphp3.2仅有
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
* 数据分页生成laytable的数据分页
* @param $db_name string 表名
* @param int $page 页码
* @param int $limit 页码size
* @param $where String|array 条件
* @param string $order 排序
* @param string $field 字段
* @param string $alias 数据表别名
* @param array|string $join 实现夺标查询
* @return array|bool 返回layui数据表格格式的数据
* @author zrd <935938143@qq.com>
*/
function lay_page($db_name,$page=1,$limit=10,$where='',$field='*',$order='',$alias='',$join=''){
if(!$db_name)
return false;
//数据表对象
$db = M($db_name);
//开始的行
$start = ($page-1) * $limit;
//数据总数
$count_num = $db->alias($alias)->join($join)->where($where)->count();
//查询数据
$data = $db->alias($alias)->join($join)->where($where)->order($order)->limit($start,$limit)->field($field)->select();
//lay数据格式
$return_data['code'] = 0;
$return_data['msg'] = '';
$return_data['count'] = $count_num;
$return_data['data'] = $data;
return $return_data;
}
ms_time
PHP获取毫秒时间戳
1
2
3
4
5
6
7
8
/**
* php获取毫秒级时间戳
* @return float 毫秒级时间戳
* @author zrd <935938143@qq.com>
*/
function ms_time(){
return floor(microtime(true) * 1000);
}
get_http_host
获取网站的域名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* 获取网站的域名
* @example https://www.baidu.com
* @return string 网站的域名
*/
function get_http_host(){
if(isset($_SERVER['HTTPS']) && ('1' == $_SERVER['HTTPS'] || 'on' == strtolower($_SERVER['HTTPS']))){
return 'https://'.$_SERVER['HTTP_HOST'];
}elseif(isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT'] )) {
return 'https://'.$_SERVER['HTTP_HOST'];
}
return 'http://'.$_SERVER['HTTP_HOST'];
}
image_upload
thinkphp 3.2专用的。经常使用到上传图片。然后直接调用这个方法就可以了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
* 图片上传,保存所有接收到的图片,返回所有图片的数组
* @return array 返回路径数组
* @author zrd
*/
function image_upload()
{
//如果这个文件路径不存在,则递归创建0777是权限
if (!is_dir('./Public/uploads/')) {
mkdir('./Public/uploads/', 0777, true);
}
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 3145728;// 设置附件上传大小
$upload->exts = array('jpg', 'png', 'jpeg', 'bmp');// 设置附件上传类型
$upload->rootPath = './Public/uploads/'; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
// 上传文件
$info = $upload->upload();
if (!$info) {// 上传错误提示错误信息
$this->error($upload->getError());
} else {// 上传成功
foreach ($info as $k => $arr) {
$path[$k] = '/Public/uploads/' . $arr['savepath'] . $arr['savename'];
}
}
return $path;
}
base64ToImage
将base64编码转成图片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
* 将base64编码转成图片
* @param $base string 图片的base64编码
* @param $path string 图片的存储路劲
* @param $name string 图片名称包括后缀名
* @return string 图片路径
* @author zrd <935938143@qq.com>
*
*/
function base64ToImage($base, $name = null, $path = null)
{
//提取base64编码出来
$url = explode(',', $base); //$url[1]就是base64的编码
$day = date('Y-m-d', time()); //今天的日期
$rand = time() . mt_rand(11110, 99999999); //生成一个随机数字,用于图片命名
$path = $path ? $path : './Uploads/base64img/' . $day . '/'; //生成图片路径
if (!is_dir($path)) { //如果这个文件路径不存在,则递归创建0777是权限
mkdir($path, 0777, true);
}
//使用定义好的命字或者随机数的名字
$name = $name ? $name : $rand . '.jpg';
//在这里判断一下base64是否存在
if (!$url[1])
//如果不存在就把0放进来
$url[1] = $url[0];
//一定要一个不存在的名字
while(true){
if(is_file($path . $name)){
$rand = time() . mt_rand(11110, 99999999);
$name = $rand.'jpg';
}else
break;
}
//将base64转图片存在路径下面
$size = file_put_contents($path . $name, base64_decode($url[1]));//返回的是字节数
//图片尺寸为0则为失败,成功则返回图片路径
if ($size) {
$path = $path . $name;
return $path;
//return ltrim($path,'.'); //如果左边多了一个点出来。就不要了
} else {
return false;
}
}
ueditor upload
ueditor修改上传的接收方法。这个演示将ueditor的图片全部直接上传到七牛云存储空间里面去。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
* ueditor上传通过thinkphp自定义的方法来上传
* @author zrd
*/
public function upload()
{
date_default_timezone_set("Asia/chongqing");
error_reporting(E_ERROR);
header("Content-Type: text/html; charset=utf-8");
$CONFIG = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents("config.json")), true);
$action = $_GET['action'];
switch ($action) {
case 'config':
$result = json_encode($CONFIG);
break;
/* 上传图片 */
case 'uploadimage':
/* 上传涂鸦 */
case 'uploadscrawl':
/* 上传视频 */
case 'uploadvideo':
/* 上传文件 */
case 'uploadfile':
//这是上传到七牛云的示例
$setting = C('UPLOAD_SITEIMG_QINIU');
$Upload = new \Think\Upload($setting);
$info = $Upload->upload($_FILES);
if ($info) {
$arr = array(
'state' => 'SUCCESS',
'url' => $info['upfile']['url'],
'title' => $info['upfile']['savename'],
'original' => $info['upfile']['name'],
'type' => $info['upfile']['ext'],
'size' => $info['upfile']['size']
);
/* 返回数据 */
$result = json_encode($arr);
} else {
$result = json_encode(array('state' => $Upload->getError()));
}
break;
default:
$result = json_encode(array(
'state' => '请求地址出错'
));
break;
}
/* 输出结果 */
if (isset($_GET["callback"])) {
if (preg_match("/^[\w_]+$/", $_GET["callback"])) {
echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
} else {
echo json_encode(array(
'state' => 'callback参数不合法'
));
}
} else {
echo $result;
}
}
/*修改ueditor的上传路径*/
/*
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
//以下都上传到七牛
if (action == 'uploadimage' || action == 'uploadscrawl' || action == 'uploadvideo' || action == 'uploadfile') {
//上传地址
return "{:U('Admin/Webset/upload',array('action'=>'uploadimage'),'')}";
} else {
return this._bkGetActionUrl.call(this, action);
}
}
*/
httpcopy
下载网页上面的图片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/**
* 下载一个网络图片
* @param string $url 图片的路径包括后缀名
* @param string $file 保存的文件名
* @param integer $timeout 超时时间
* @return string 返回下载成功的本地路径
*/
function httpcopy($url, $file = "", $timeout = 60)
{
//得到文件名
$file = empty($file) ? pathinfo($url, PATHINFO_BASENAME) : $file;
//获取文件类型,得到这个路径扩展名部分
$file_type = strtolower(pathinfo($url, PATHINFO_EXTENSION));
//允许的文件类型
$ok_type = array('jpg', 'gif', 'png', 'jpeg');
if (!in_array($file_type, $ok_type))
return false; //文件类型不支持,不下载。
//文件保存路径
$dir = './download_img/';
!is_dir($dir) && @mkdir($dir, 0755, true);
$url = str_replace(" ", "%20", $url); //将url中的空格,转换为%20空格
if (function_exists('curl_init')) {//判断这个函数存在否
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$temp = curl_exec($ch);
if (@file_put_contents($file, $temp) && !curl_error($ch)) {
return $file;
} else {
return false;
}
} else {
$opts = array(
"http" => array(
"method" => "GET",
"header" => "",
"timeout" => $timeout)
);
$context = stream_context_create($opts);
if (@copy($url, $file, $context)) {
return $file;
} else {
return false;
}
}
}
WX_httpGet
微信提供的httpget
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 微信提供的httpget
* @param $url string 请求地址
* @return mixed 返回结果
*/
function WX_httpGet($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_URL, $url);
//这两句是取消https验证的。使用https我本地返回false。不知道在服务器怎样?
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
post_json
使用php 提交post的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* 向url post json的数据
* @param $url string url地址
* @param $json_data string json字符串
* @return string
*/
function post_json($url,$json_data){
if(is_array($json_data)){
$json_data = json_encode($json_data);
}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS,$json_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($json_data))
);
$result = curl_exec($ch);
return $result;
}