自定义php功能函数110个

整理的自定义php常用函数110个,包括图片操作、阿里云OSS、文件下载、短信验证码等
整理的自定义php常用函数110个,包括图片操作、阿里云OSS、文件下载、短信验证码等
<?php

header("Content-type:text/html;charset=utf-8");

  1. /*
  2.  * 定义发送短信验证码方法
  3.  * 使用php自带的SoapClient类来获取短信接口数据
  4.  * 该接口的自动发送验证码方法是Submit()方法
  5.  * 自学php博客www.zixuephp.cn整理
  6.  */
  7. function phonecode($phone){
  8.     $soap=new SoapClient('http://101.201.52.251:7801/sms?wsdl');
  9.     $code='';
  10.     for($i=0;$i<6;$i++){
  11.         $code.=rand(0,9);//生成6位随机字符的验证码
  12.     }
  13.     $str="【XXXX】网站注册验证码:".$code.",十五分钟内输入有效。如非本人操作,请忽略此消息。";
  14.     $res=$soap->Submit("210007","XXXXX","XXXX",$str,$phone);
  15.     return $code;
  16. }
复制代码
 

/**
* 判断用户输入是否存在敏感词
* 需要在ThinkPHP的ORG扩展文件夹中,添加敏感词类文件SensitiveFilter.php
*自学php博客www.zixuephp.cn整理
*/

  1. function sensitive($content){
  2.     //$arr=C('SENSITIVE');
  3.     import("ORG.SensitiveFilter");
  4.     $arr=SensitiveFilter::getWord();
  5.     foreach ($arr as $v) {
  6.         if (false !== strstr($content, $v)){
  7.             $content=str_replace($v,'***',$content);//内容中存在敏感词库中的敏感词,则将敏感词用*替换
  8.         }
  9.     }
  10.     return $content;
  11.  }
复制代码
 

/**
*传递数据以易于阅读的样式格式化后输出
*自学php博客www.zixuephp.cn整理
*/

  1. function p($data){
  2.     // 定义样式
  3.     $str='<pre style="display: block;padding: 9.5px;margin: 44px 0 0 0;font-size: 13px;line-height: 1.42857;color: #333;word-break: break-all;word-wrap: break-word;#F5F5F5;border: 1px solid #CCC;border-radius: 4px;">';
  4.     // 如果是boolean或者null直接显示文字;否则print
  5.     if (is_bool($data)) {
  6.         $show_data=$data ? 'true' : 'false';
  7.     }elseif (is_null($data)) {
  8.         $show_data='null';
  9.     }else{
  10.         $show_data=print_r($data,true);
  11.     }
  12.     $str.=$show_data;
  13.     $str.='</pre>';
  14.     echo $str;
  15. }
复制代码
 

/**
* app 图片上传
* $path 上传图图片的路径
* $maxSize 上传图片的大小控制
* @return string 上传后的图片名
* 自学php博客www.zixuephp.cn整理
*/

  1. function app_upload_image($path,$maxSize=52428800){
  2.     ini_set('max_execution_time', '0');
  3.     // 去除两边的/
  4.     $path=trim($path,'.');
  5.     $path=trim($path,'/');
  6.     $config=array(
  7.         'rootPath'  =>'./',         //文件上传保存的根路径
  8.         'savePath'  =>'./'.$path.'/',   
  9.         'exts'      => array('jpg', 'gif', 'png', 'jpeg','bmp'),
  10.         'maxSize'   => $maxSize,
  11.         'autoSub'   => true,
  12.         );
  13.     $upload = new \Think\Upload($config);// 实例化上传类
  14.     $info = $upload->upload();
  15.     if($info) {
  16.         foreach ($info as $k => $v) {
  17.             $data[]=trim($v['savepath'],'.').$v['savename'];
  18.         }
  19.         return $data;
  20.     }
  21. }
复制代码
 

/**
* 阿里云OSS操作
* 实例化阿里云oos
* @return object 实例化得到的对象
* 自学php博客www.zixuephp.cn整理
*/

  1. function new_oss(){
  2.     vendor('Alioss.autoload');
  3.     $config=C('ALIOSS_CONFIG');
  4.     $oss=new \OSS\OssClient($config['KEY_ID'],$config['KEY_SECRET'],$config['END_POINT']);
  5.     return $oss;
  6. }
复制代码
 

/**
* 阿里云OSS操作
* 上传object
* key 用专题的id标识本片专题
* $str 是要上传的专题的内容
* 自学php博客www.zixuephp.cn整理
*/

  1. function uploadObject($str,$id){
  2.     $id='M_Upload/zhuanti/content/'.$id;
  3.     $accessKeyId=C('ALIOSS_CONFIG.KEY_ID');
  4.     $accessKeySecret=C('ALIOSS_CONFIG.KEY_SECRET');
  5.     $endpoint=C('ALIOSS_CONFIG.END_POINT');
  6.     $bucket=C('ALIOSS_CONFIG.BUCKET');
  7.     //$oss->putObject($bucket,$id,$str);
  8.     vendor('Alioss.autoload');
  9.     $config=C('ALIOSS_CONFIG');
  10.     $ossClient=new \OSS\OssClient($config['KEY_ID'],$config['KEY_SECRET'],$config['END_POINT']);
  11.     try {
  12.         
  13.         //$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  14.         $ossClient->putObject($bucket, $id, $str);
  15.     } catch (OssException $e) {
  16.         printf(__FUNCTION__ . ": FAILED\n");
  17.         printf($e->getMessage() . "\n");
  18.         return;
  19.     }
  20.     return $id;
  21. }
复制代码
 

/**
* 阿里云OSS操作
* 上传object
* key 用专题的id标识本片专题
* $str 是要上传的专题的内容
* 自学php博客www.zixuephp.cn整理
*/

  1. function downObject($id){
  2.     $accessKeyId=C('ALIOSS_CONFIG.KEY_ID');
  3.     $accessKeySecret=C('ALIOSS_CONFIG.KEY_SECRET');
  4.     $endpoint=C('ALIOSS_CONFIG.END_POINT');
  5.     $bucket=C('ALIOSS_CONFIG.BUCKET');
  6.     //$oss->putObject($bucket,$id,$str);
  7.     try {
  8.         vendor('Alioss.autoload');
  9.         $config=C('ALIOSS_CONFIG');
  10.         $ossClient=new \OSS\OssClient($config['KEY_ID'],$config['KEY_SECRET'],$config['END_POINT']);
  11.         $content=$ossClient->getObject($bucket, $id);
  12.         print("object content: " . $content);
  13.     } catch (OssException $e) {
  14.         print $e->getMessage();
  15.     }
  16. }
复制代码
 

/**
* 阿里云OSS操作
* 上传文件到阿里云OSS并删除本地文件
* @param string $path 文件路径
* @return bollear 是否上传
* 自学php博客www.zixuephp.cn整理
*/

  1. function oss_upload($path){
  2.     // 获取bucket名称
  3.     $bucket=C('ALIOSS_CONFIG.BUCKET');
  4.     // 先统一去除左侧的.或者/ 再添加./
  5.     $oss_path=ltrim($path,'./');
  6.     $path='./'.$oss_path;
  7.     if (file_exists($path)) {
  8.         // 实例化oss类
  9.         $oss=new_oss();
  10.         // 上传到oss    
  11.         $oss->uploadFile($bucket,$oss_path,$path);
  12.         // 如需上传到oss后 自动删除本地的文件 则删除下面的注释 
  13.         unlink($path);
  14.         return true;
  15.     }
  16.     return false;
  17. }
复制代码
 

/**
* 阿里云OSS操作
* 删除阿里云OSS上指定文件
* @param string $object 文件路径 例如删除 /Public/README.md文件 传Public/README.md 即可
* 自学php博客www.zixuephp.cn整理
*/

  1. function oss_delet_object($object){
  2.     // 实例化oss类
  3.     $oss=new_oss();
  4.     // 获取bucket名称
  5.     $bucket=C('ALIOSS_CONFIG.BUCKET');
  6.     $test=$oss->deleteObject($bucket,$object);
  7. }
复制代码
 

/**
* 阿里云OSS操作
* 获取完整网络连接
* @param string $path 文件路径
* @return string http连接
* 自学php博客www.zixuephp.cn整理
*/

  1. function get_url($path){
  2.     // 如果是空;返回空
  3.     if (empty($path)) {
  4.         return '';
  5.     }
  6.     // 如果已经有http直接返回
  7.     if (strpos($path, 'http://')!==false) {
  8.         return $path;
  9.     }
  10.     // 判断是否使用了oss
  11.     $alioss=C('ALIOSS_CONFIG');
  12.     if (empty($alioss['KEY_ID'])) {
  13.         return 'http://'.$_SERVER['HTTP_HOST'].$path;
  14.     }else{
  15.         $path=ltrim($path,'.');
  16.         return 'http://'.$alioss['BUCKET'].'.'.$alioss['END_POINT'].$path;
  17.     }
  18.     
  19. }
复制代码
 

/**
* app 视频上传
* @return string 上传后的视频名
* 自学php博客www.zixuephp.cn整理
*/

  1. function app_upload_video($path,$maxSize=52428800){
  2.     ini_set('max_execution_time', '0');
  3.     // 去除两边的/
  4.     $path=trim($path,'.');
  5.     $path=trim($path,'/');
  6.     $config=array(
  7.         'rootPath'  =>'./',         //文件上传保存的根路径
  8.         'savePath'  =>'./'.$path.'/',   
  9.         'exts'      => array('mp4','avi','3gp','rmvb','gif','wmv','mkv','mpg','vob','mov','flv','swf','mp3','ape','wma','aac','mmf','amr','m4a','m4r','ogg','wav','wavpack'),
  10.         'maxSize'   => $maxSize,
  11.         'autoSub'   => true,
  12.         );
  13.     $upload = new \Think\Upload($config);// 实例化上传类
  14.     $info = $upload->upload();
  15.     if($info) {
  16.         foreach ($info as $k => $v) {
  17.             $data[]=trim($v['savepath'],'.').$v['savename'];
  18.         }
  19.         return $data;
  20.     }
  21. }
复制代码
 

/**
* 返回文件格式
* @param string $str 文件名
* @return string 文件格式
* 自学php博客www.zixuephp.cn整理
*/

  1. function file_format($str){
  2.     // 取文件后缀名
  3.     $str=strtolower(pathinfo($str, PATHINFO_EXTENSION));
  4.     // 图片格式
  5.     $image=array('webp','jpg','png','ico','bmp','gif','tif','pcx','tga','bmp','pxc','tiff','jpeg','exif','fpx','svg','psd','cdr','pcd','dxf','ufo','eps','ai','hdri');
  6.     // 视频格式
  7.     $video=array('mp4','avi','3gp','rmvb','gif','wmv','mkv','mpg','vob','mov','flv','swf','mp3','ape','wma','aac','mmf','amr','m4a','m4r','ogg','wav','wavpack');
  8.     // 压缩格式
  9.     $zip=array('rar','zip','tar','cab','uue','jar','iso','z','7-zip','ace','lzh','arj','gzip','bz2','tz');
  10.     // 文档格式
  11.     $text=array('exe','doc','ppt','xls','wps','txt','lrc','wfs','torrent','html','htm','java','js','css','less','php','pdf','pps','host','box','docx','word','perfect','dot','dsf','efe','ini','json','lnk','log','msi','ost','pcs','tmp','xlsb');
  12.     // 匹配不同的结果
  13.     switch ($str) {
  14.         case in_array($str, $image):
  15.             return 'image';
  16.             break;
  17.         case in_array($str, $video):
  18.             return 'video';
  19.             break;
  20.         case in_array($str, $zip):
  21.             return 'zip';
  22.             break;
  23.         case in_array($str, $text):
  24.             return 'text';
  25.             break;
  26.         default:
  27.             return 'image';
  28.             break;
  29.     }
  30. }
复制代码
 


/**
* 发送友盟推送消息
* @param integer $uid 用户id
* @param string $title 推送的标题
* @return boolear 是否成功
* 自学php博客www.zixuephp.cn整理
*/

  1. function umeng_push($uid,$title){
  2.     // 获取token
  3.     $device_tokens=D('OauthUser')->getToken($uid,2);
  4.     // 如果没有token说明移动端没有登录;则不发送通知
  5.     if (empty($device_tokens)) {
  6.         return false;
  7.     }
  8.     // 导入友盟
  9.     Vendor('Umeng.Umeng');
  10.     // 自定义字段   根据实际环境分配;如果不用可以忽略
  11.     $status=1;
  12.     // 消息未读总数统计  根据实际环境获取未读的消息总数 此数量会显示在app图标右上角
  13.     $count_number=1;
  14.     $data=array(
  15.         'key'=>'status',
  16.         'value'=>"$status",
  17.         'count_number'=>$count_number
  18.         );
  19.     // 判断device_token  64位表示为苹果 否则为安卓
  20.     if(strlen($device_tokens)==64){
  21.         $key=C('UMENG_IOS_APP_KEY');
  22.         $timestamp=C('UMENG_IOS_SECRET');
  23.         $umeng=new \Umeng($key, $timestamp);
  24.         $umeng->sendIOSUnicast($data,$title,$device_tokens);
  25.     }else{
  26.         $key=C('UMENG_ANDROID_APP_KEY');
  27.         $timestamp=C('UMENG_ANDROID_SECRET');
  28.         $umeng=new \Umeng($key, $timestamp);
  29.         $umeng->sendAndroidUnicast($data,$title,$device_tokens);
  30.     }
  31.     return true;
  32. }
复制代码
 

 


/**
* 返回用户id
* @return integer 用户id
* 自学php博客www.zixuephp.cn整理
*/

 

  1. function get_uid(){
  2.     return $_SESSION['user']['id'];//根据自己登录的时候保存的SESSION元素而定
  3. }
复制代码
 

/**
* 返回iso、Android、ajax的json格式数据
* @param array $data 需要发送到前端的数据
* @param string $error_message 成功或者错误的提示语
* @param integer $error_code 状态码: 0:成功 1:失败
* @return string json格式的数据
* 自学php博客www.zixuephp.cn整理
*/

  1. function ajax_return($data='',$error_message='成功',$error_code=1){
  2.     $all_data=array(
  3.         'error_code'=>$error_code,
  4.         'error_message'=>$error_message,
  5.         );
  6.     if ($data!=='') {
  7.         $all_data['data']=$data;
  8.         // app 禁止使用和为了统一字段做的判断
  9.         $reserved_words=array('id','title','price','product_title','product_id','product_category','product_number');
  10.         foreach ($reserved_words as $k => $v) {
  11.             if (array_key_exists($v, $data)) {
  12.                 echo 'app不允许使用【'.$v.'】这个键名 —— 此提示是function.php 中的ajax_return函数返回的';
  13.                 die;
  14.             }
  15.         }
  16.     }
  17.     // 如果是ajax或者app访问;则返回json数据 pc访问直接p出来
  18.     echo json_encode($all_data);
  19.     exit(0);
  20. }
复制代码
 

/**
* 检测是否登录
* @return boolean 是否登录
* 自学php博客www.zixuephp.cn整理
*/

  1. function check_login(){
  2.     if (!empty($_SESSION['user']['id'])){
  3.         return true;
  4.     }else{
  5.         return false;
  6.     }
  7. }
复制代码
 

/**
* 根据配置项获取对应的key和secret
* @return array key和secret
* 自学php博客www.zixuephp.cn整理
*/

  1. function get_rong_key_secret(){
  2.     // 判断是需要开发环境还是生产环境的key
  3.     if (C('RONG_IS_DEV')) {
  4.         $key=C('RONG_DEV_APP_KEY');
  5.         $secret=C('RONG_DEV_APP_SECRET');
  6.     }else{
  7.         $key=C('RONG_PRO_APP_KEY');
  8.         $secret=C('RONG_PRO_APP_SECRET');
  9.     }
  10.     $data=array(
  11.         'key'=>$key,
  12.         'secret'=>$secret
  13.         );
  14.     return $data;
  15. }
复制代码
 

/**
* 获取融云token
* @param integer $uid 用户id
* @return integer token
* 自学php博客www.zixuephp.cn整理
*/

  1. function get_rongcloud_token($uid){
  2.     // 从数据库中获取token
  3.     $token=D('OauthUser')->getToken($uid,1);
  4.     // 如果有token就返回
  5.     if ($token) {
  6.         return $token;
  7.     }
  8.     // 获取用户昵称和头像
  9.     $user_data=M('Users')->field('username,avatar')->getById($uid);
  10.     // 用户不存在
  11.     if (empty($user_data)) {
  12.         return false;
  13.     }
  14.     // 获取头像url格式
  15.     $avatar=get_url($user_data['avatar']);
  16.     // 获取key和secret
  17.     $key_secret=get_rong_key_secret();
  18.     // 实例化融云
  19.     $rong_cloud=new \Org\Xb\RongCloud($key_secret['key'],$key_secret['secret']);
  20.     // 获取token
  21.     $token_json=$rong_cloud->getToken($uid,$user_data['username'],$avatar);
  22.     $token_array=json_decode($token_json,true);
  23.     // 获取token失败
  24.     if ($token_array['code']!=200) {
  25.         return false;
  26.     }
  27.     $token=$token_array['token'];
  28.     $data=array(
  29.         'uid'=>$uid,
  30.         'type'=>1,
  31.         'nickname'=>$user_data['username'],
  32.         'head_img'=>$avatar,
  33.         'access_token'=>$token
  34.         );
  35.     // 插入数据库
  36.     $result=D('OauthUser')->addData($data);
  37.     if ($result) {
  38.         return $token;
  39.     }else{
  40.         return false;
  41.     }
  42. }
复制代码
 

/**
* 更新融云头像
* @param integer $uid 用户id
* @return boolear 操作是否成功
* 自学php博客www.zixuephp.cn整理
*/

  1. function refresh_rongcloud_token($uid){
  2.     // 获取用户昵称和头像
  3.     $user_data=M('Users')->field('username,avatar')->getById($uid);
  4.     // 用户不存在
  5.     if (empty($user_data)) {
  6.         return false;
  7.     }
  8.     $avatar=get_url($user_data['avatar']);
  9.     // 获取key和secret
  10.     $key_secret=get_rong_key_secret();
  11.     // 实例化融云
  12.     $rong_cloud=new \Org\Xb\RongCloud($key_secret['key'],$key_secret['secret']);
  13.     // 更新融云用户头像
  14.     $result_json=$rong_cloud->userRefresh($uid,$user_data['username'],$avatar);
  15.     $result_array=json_decode($result_json,true);
  16.     if ($result_array['code']==200) {
  17.         return true;
  18.     }else{
  19.         return false;
  20.     }
  21. }
posted @ 2022-04-22 10:45  zhaoyepeng  阅读(83)  评论(0)    收藏  举报