递归创建目录

/**

* 递归创建目录

* @param [type] $dir [description]

* @return [type] [description]

*/

function mkdirs($dir)

{

if(!is_dir($dir)){

if(!mkdirs(dirname($dir))){

return false;

}

if(!mkdir($dir, 0777)){

return false;

} else {

chmod($dir, 0777);

}

}

return true;

}

################# 使用实例 #######################

echo mkdirs('aaa/bbb/ccc/ddd/');

mb_substr系列函数截取字符串

/**

* 截取中文字符串

* @param [type] $string [截取字符串]

* @param integer $length [截取长度]

* @param integer $start [开始位置]

* @return [type] [description]

*/

function getSubstr($string, $length = 10, $start = 0)

{

if(mb_strlen($string,'utf-8')>$length){

# 对英文或中文字符都表示一个单位

$str = mb_strcut($string, $start, $length,'utf-8');

# 对中文字符是3个单位,英文是1个单位

$str = mb_substr($string, $start, $length,'utf-8');

return $str.'...';

}else{

return $string;

}

}

################# 使用实例 #######################

echo getSubstr('这样ABc来我的abc字符串就不会有乱码^_^', 5);

exit;

字节单位换算函数

/**

* 字节单位换算函数

* @param [type] $size [资源大小]

* @param integer $digits [保留小数位]

* @return [type] [description]

*/

function size2mb($size,$digits=2)

{

$unit = array('','K','M','G','T','P'); //单位数组,是必须1024进制依次的哦。

$base = 1024; //对数的基数

$i = floor(log($size,$base)); //字节数对1024取对数,值向下取整。

return round($size/pow($base,$i),$digits).' '.$unit[$i] . 'B';

}

/**

* 容量单位计算,支持定义小数保留长度;定义起始和目标单位,或按1024自动进位

*

* @param int $size,容量计数

* @param type $unit,容量计数单位,默认为字节

* @param type $decimals,小数点后保留的位数,默认保留一位

* @param type $targetUnit,转换的目标单位,默认自动进位

* @return type 返回符合要求的带单位结果

*/

function fileSizeConv($size, $unit = 'B', $decimals = 2, $targetUnit = 'auto')

{

$units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB');

$theUnit = array_search(strtoupper($unit), $units); //初始单位是哪个

//判断是否自动计算,

if ($targetUnit != 'auto')

$targetUnit = array_search(strtoupper($targetUnit), $units);

//循环计算

while ($size >= 1024) {

$size/=1024;

$theUnit++;

if ($theUnit == $targetUnit)//已符合给定则退出循环吧!

break;

}

return sprintf("%1\$.{$decimals}f", $size) . $units[$theUnit];

}

################# 使用实例 #######################

echo size2mb(10240000900);

echo '
';

echo fileSizeConv(10240000900);

exit;

获取页面URL地址

/**

* 获取页面URL地址

* @return [type] [description]

*/

function getUrl(){

$url="http://www.xxxx.com";

if(isset($_SERVER["REQUEST_URI"])){

$url.=$_SERVER["REQUEST_URI"];

} else{

$url.=$_SERVER["PHP_SELF"];

if(!empty($_SERVER["QUERY_STRING"])){

$url.="?".$_SERVER["QUERY_STRING"];

}

}

return $url;

}

获取上页地址

/**

* 获取上页地址

* @return [type] [description]

*/

function getReferer()

{

return $_SERVER['HTTP_REFERER'];

}

设置登录成功返回页地址

/**

* 设置返回页地址

*/

function setReturnUrl()

{

$return_url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

setcookie('returnurl', $return_url,time()+3600, '/', ".xxxx.com");

}

显示友好的时间格式

/**

* [显示友好的时间格式 xx分钟前 xx小时前 xx天 超过3天显示正常时间]

* @param [type] $date [description]

* @return [type] [description]

*/

function dataStr($date){

if((time()-$date)<60*10){

//十分钟内

echo '刚刚';

}elseif(((time()-$date)<60*60)&&((time()-$date)>=60*10)){

//超过十分钟少于1小时

$s = floor((time()-$date)/60);

echo $s."分钟前";

}elseif(((time()-$date)<60*60*24)&&((time()-$date)>=60*60)){

//超过1小时少于24小时

$s = floor((time()-$date)/60/60);

echo $s."小时前";

}elseif(((time()-$date)<60*60*24*3)&&((time()-$date)>=60*60*24)){

//超过1天少于3天内

$s = floor((time()-$date)/60/60/24);

echo $s."天前";

}else{

//超过3天

echo date("Y/m/d",$date);

}

}

/**

* 显示友好的时间格式

*

* @param [type] $time [description]

* @return [type] [description]

*/

function formatTime($time)

{

//获取今天凌晨的时间戳

$day = strtotime(date('Y-m-d',time()));

//获取昨天凌晨的时间戳

$pday = strtotime(date('Y-m-d',strtotime('-1 day')));

//获取现在的时间戳

$nowtime = time();

$tc = $nowtime-$time;

if($time

$str = date('Y-m-d H:i:s',$time);

}elseif($time$pday){

$str = "昨天";

}elseif($tc>60*60){

$str = floor($tc/(60*60))."小时前";

}elseif($tc>60){

$str = floor($tc/60)."分钟前";

}else{

$str = "刚刚";

}

return $str;

}

/**

* 显示友好的时间格式

*

* @param [type] $time [description]

* @return [type] [description]

*/

function transfer_time($time)

{

$rtime = date("m-d H:i",$time);

$htime = date("H:i",$time);

$time = time() - $time;

if ($time < 60)

{

$str = '刚刚';

}

elseif ($time < 60 * 60)

{

$min = floor($time/60);

$str = $min.'分钟前';

}

elseif ($time < 60 * 60 * 24)

{

$h = floor($time/(60*60));

$str = $h.'小时前 '.$htime;

}

elseif ($time < 60 * 60 * 24 * 3)

{

$d = floor($time/(60*60*24));

if($d==1)

$str = '昨天 '.$rtime;

else

$str = '前天 '.$rtime;

}

else

{

$str = $rtime;

}

return $str;

}

################# 使用实例 #######################

echo dataStr(time()-200000);

echo '
';

echo formatTime(time()-200000);

echo '
';

echo transfer_time(time()-200000);

创建头像存放路径

/**

* 创建资源存放路径

* 格式:000/00/01/36_middle.jpg

*

* @param $uid

* @param string $size

* @return string

*/

function createSavePath($saveId, $size = '')

{

$size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';

$saveId = abs(intval($saveId));

$saveId = sprintf("%09d", $saveId);

$dir1 = substr($saveId, 0, 3);

$dir2 = substr($saveId, 3, 2);

$dir3 = substr($saveId, 5, 2);

return "{$dir1}/{$dir2}/{$dir3}/".substr($saveId, -2)."_{$size}.jpg";

}

################# 使用实例 #######################

echo createSavePath(136);

创建安全下载地址

/**

* 创建安全下载地址

* @param $fileName

* @param int $show

* @return string

*/

function downUrl($fileName, $show = 1)

{

$expired = time() + (3600 * 1); // 过期时间

$secret = 'ADFO9834RH94'; // salt

$md5_secret = base64_encode(md5("{$secret}{$fileName}{$expired}", true));

$md5_secret = str_replace('=', '', strtr($md5_secret, '+/', '-_'));

$down_url = "http://www.xxxx.com{$fileName}?st={$md5_secret}&e={$expired}";

if ($show == 1) {

die("" . $down_url . "");

} elseif ($show == 2) {

return $down_url;

exit;

}

header("Content-type:application/zip");

header("location:{$down_url}");

exit;

}

防止表单注入

/**

* 防止表单注入

* 显示的时候要用 stripslashes() 去掉反斜杠

* stripslashes()了,它能把addslashes()处理时自动加上去的(反斜杠)\去掉

* @param $str

* @return string

*/

function formSafe($str)

{

$str = strip_tags($str); //去掉html标签

if(!get_magic_quotes_gpc()) //判断设置是否开启 只有0和1两种情况

{

$str = addslashes($str); //转换sql语句特殊字符

}

return $str;

}

数组键值排序函数

/**

* 数组键值排序

* @param $arr

* @param $keys

* @param string $type

* @return array

*/

function arrayKeySort($arr,$keys,$type='asc'){

$keysvalue = $new_array = array();

foreach ($arr as $k=>$v){

$keysvalue[$k] = $v[$keys];

}

if($type == 'asc'){

asort($keysvalue);

}else{

arsort($keysvalue);

}

reset($keysvalue);

$i = 0;

foreach ($keysvalue as $k=>$v){

$new_array[$i] = $arr[$k];

$i++;

}

return $new_array;

}

################# 使用实例 #######################

$aaa = array(

['key'=>10, 'name'=>'aaaaaaaaaa'],

['key'=>4, 'name'=>'sssssssssssss'],

['key'=>7, 'name'=>'cccccccccccccccc'],

['key'=>22, 'name'=>'ddddddddddddddddd'],

['key'=>67, 'name'=>'ffffffffffffffffffffffff'],

['key'=>2, 'name'=>'ooooooooooooooooooo'],

);

$aaas = arrayKeySort($aaa, 'key');

echo '

';

print_r($aaas);

获取系统真实IP地址

/**

* 获取系统真实IP地址

* @return string

*/

function getRealIP(){

if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))

$ip = getenv("HTTP_CLIENT_IP");

else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))

$ip = getenv("HTTP_X_FORWARDED_FOR");

else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))

$ip = getenv("REMOTE_ADDR");

else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))

$ip = $_SERVER['REMOTE_ADDR'];

else

$ip = "unknown";

return $ip;

}

################# 使用实例 #######################

echo getRealIP();

FTP操作类 [ 拷贝、移动、删除文件/创建目录]

/**

* 作用:FTP操作类( 拷贝、移动、删除文件/创建目录 )

* 时间:2016年9月29日18:45:18

* 作者:YPHP

* QQ:418250505

*/

class Ftp

{

public $off; // 返回操作状态(成功/失败)

public $conn_id; // FTP连接

/**

* 方法:FTP连接

* @FTP_HOST -- FTP主机

* @FTP_PORT -- 端口

* @FTP_USER -- 用户名

* @FTP_PASS -- 密码

*/

public function __construct($FTP_HOST, $FTP_PORT, $FTP_USER, $FTP_PASS)

{

$this->conn_id = @ftp_connect($FTP_HOST, $FTP_PORT) or die("FTP服务器连接失败");

@ftp_login($this->conn_id, $FTP_USER, $FTP_PASS) or die("FTP服务器登陆失败");

@ftp_pasv($this->conn_id, 1); // 打开被动模拟

}

/**

* 方法:上传文件

* @path -- 本地路径

* @newpath -- 上传路径

* @type -- 若目标目录不存在则新建

*/

public function upFile($path, $newpath, $type = true)

{

if ($type) $this->createMkdir($newpath);

$this->off = @ftp_put($this->conn_id, $newpath, $path, FTP_BINARY);

if (!$this->off) echo "文件上传失败,请检查权限及路径是否正确!";

}

/**

* 方法:移动文件

* @path -- 原路径

* @newpath -- 新路径

* @type -- 若目标目录不存在则新建

*/

public function moveFile($path, $newpath, $type = true)

{

if ($type) $this->createMkdir($newpath);

$this->off = @ftp_rename($this->conn_id, $path, $newpath);

if (!$this->off) echo "文件移动失败,请检查权限及原路径是否正确!";

}

/**

* 方法:复制文件

* 说明:由于FTP无复制命令,本方法变通操作为:下载后再上传到新的路径

* @path -- 原路径

* @newpath -- 新路径

* @type -- 若目标目录不存在则新建

*/

public function copyFile($path, $newpath, $type = true)

{

$downpath = "c:/tmp.dat";

$this->off = @ftp_get($this->conn_id, $downpath, $path, FTP_BINARY);// 下载

if (!$this->off) echo "文件复制失败,请检查权限及原路径是否正确!";

$this->up_file($downpath, $newpath, $type);

}

/**

* 方法:删除文件

* @path -- 路径

*/

public function delFile($path)

{

$this->off = @ftp_delete($this->conn_id, $path);

if (!$this->off) echo "文件删除失败,请检查权限及路径是否正确!";

}

/**

* 方法:生成目录

* @path -- 路径

*/

protected function createMkdir($path)

{

$path_arr = explode('/', $path); // 取目录数组

$file_name = array_pop($path_arr); // 弹出文件名

$path_div = count($path_arr); // 取层数

foreach ($path_arr as $val) // 创建目录

{

if (@ftp_chdir($this->conn_id, $val) == FALSE) {

$tmp = @ftp_mkdir($this->conn_id, $val);

if ($tmp == FALSE) {

echo "目录创建失败,请检查权限及路径是否正确!";

exit;

}

@ftp_chdir($this->conn_id, $val);

}

}

for ($i = 1; $i = $path_div; $i++) // 回退到根

{

@ftp_cdup($this->conn_id);

}

}

/**

* 方法:关闭FTP连接

*/

public function close()

{

@ftp_close($this->conn_id);

}

}

################# 使用实例 #######################

$ftp = new class_ftp('192.168.100.143', 21, 'user', 'pwd'); // 打开FTP连接

$ftp->upFile('aa.txt', 'a/b/c/cc.txt'); // 上传文件

$ftp->moveFile('a/b/c/cc.txt', 'a/cc.txt'); // 移动文件

$ftp->copyFile('a/cc.txt', 'a/b/dd.txt'); // 复制文件

$ftp->delFile('a/b/dd.txt'); // 删除文件

$ftp->close(); // 关闭FTP连接

php下dat函数e,PHP 常用函数记录 一相关推荐

  1. mysql下SQL注入截取字符串常用函数mid(),substr(),left()

    在sql注入中,往往会用到截取字符串的问题,例如不回显的情况下进行的注入,也成为盲注,这种情况下往往需要一个一个字符的去猜解,过程中需要用到截取字符串 mid函数 此函数为截取字符串一部分.MID(c ...

  2. python3常用函数大全_Python3NumPy——常用函数

    Python3NumPy的常用函数 1. txt文件 (1) 单位矩阵,即主对角线上的元素均为1,其余元素均为0的正方形矩阵. 在NumPy中可以用eye函数创建一个这样的二维数组,我们只需要给定一个 ...

  3. QT:常用函数详解--常用操作记录(个人笔记)

    QT:常用函数详解(个人笔记) PS:一下内容个人笔记,要求自己看懂,随笔,阅读体验会很差很差! Qt setContentsMargins()函数 函数原型:void QLayout::setCon ...

  4. 计算机应用常用的30个函数,Excel中常用函数的使用

    ISSN 1009-30" 咖船r Kno别b内e and伯叻肋叻电奠知识'i技术 V01.6,No.30,October20lO,pP.8523-8524E-mail:x8jl@cccc. ...

  5. db2 dec函数oracle,DB2常用函数和Oracle的比较

    文章主要讲述的是DB2常用函数与Oracle的比较,其中主要涉及到的内容有类型转化函数,时间日期,字符串函数以及数学函数的描述,下面就是文章的主要内容的描述,望大家会对其有更好的收获. DB2常用函数 ...

  6. sqlite+php+函数大全,Sqlite 常用函数 推荐

    Sqlite 常用函数 推荐 更新时间:2009年09月25日 23:21:57   作者: Sqlite 常用函数,在实际开发中,经常遇的到. 1 .打开数据库: 说明:打开一个数据库,文件名不一定 ...

  7. 用计算机求函数公式,计算机常用函数公式

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 计算机常用函数公式主要有:SUM函数.ABS函数.AND函数.AVERAGE函数.IF函数.COUNTIF函数.RANK函数等. ...

  8. php常用系统函数库,PHP常用函数大全

    php usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_ ...

  9. 计算机条件函数ppt,EXCEL常用函数教程PPT讲课课件_计算机硬件及应用_IT/计算机_资料(2)...

    MIN函数语法同上.Small(单元格区域,数字N),其中后者为包括数字的单元格区域,后 者为应查找的第N小的数字.3. max.min.small.large.rank函数large(单元格区域,数 ...

最新文章

  1. 【LeetCode】104. Maximum Depth of Binary Tree (2 solutions)
  2. Android DatePicker, TimePicker控件的使用
  3. 语音识别维特比解码_HMM连续语音识别中Viterbi算法的优化及应用
  4. Maven配置nexus
  5. SpringBoot笔记整理(三)
  6. 20190813:(leetcode习题)加一
  7. 代理app请求地址访问本机服务(同一局域网的本地起的服务器)方便测试app
  8. 非参数统计单样本非参数检验之Kolmogorov-Smirnov检验
  9. appium-desktop 1.13 windows 版本网盘下载
  10. Python数据分析:数据可视化案例
  11. POJO和po,vo,bo
  12. CR渲染器全景图如何渲染颜色通道_无需凤凰流体,就可以制作3D火焰效果?「渲云渲染」...
  13. H5唤醒支付宝登录授权
  14. 推荐一个数据可视化大屏幕报表开源系统
  15. 小程序用户登录权限设置
  16. java一只母牛 一年生头小牛_Java实现:工厂有一头母牛,一年生一头小母牛,小母牛五年后可以生小牛,问20年工厂有多少头牛?...
  17. 物联网4G工业路由器在森林烟火监测的应用
  18. LUOGU1438无聊的数列
  19. MySQL燕十八老师课程笔记:第十六课:MySQL各个函数
  20. 2021-02-05

热门文章

  1. MERGE INTO
  2. CentOS 6网络配置
  3. 如何判断添加的一个面要素是否与某一个面图层相交(AO)
  4. halcon python_使用pythonnet调用halcon脚本
  5. 模拟退火算法SA参数设置实验记录
  6. php 文件管理系统_如何编写程序实现图书管理系统的个人图书借阅查询功能
  7. 笔记本nc10装linux,绝配:Ubuntu 9.04与上网本(NC10)
  8. 【控制】《自动控制原理》胡寿松老师-第10章-动态系统的最优控制方法
  9. 【数理知识】特征值、特征向量、左特征向量
  10. ubuntu+VsCode+Cmake+eigen 开发eigen应用