/**
* 高效判断远程文件是否存在
* @param $file
* @return bool 存在返回 true 不存在或者其他原因返回false
*/
function remoteFileExist($file)
{
if(preg_match('/^http:\/\//',$file)){
//远程文件
if(ini_get('allow_url_fopen')){
if(@fopen($file,'r')) return true;
}
else{
$parseurl=parse_url($file);
$host=$parseurl['host'];
$path=$parseurl['path'];
$fp=fsockopen($host,80, $errno, $errstr, 10);
if(!$fp)return false;
fputs($fp,"GET {$path} HTTP/1.1 \r\nhost:{$host}\r\n\r\n");
if(preg_match('/HTTP\/1.1 200/',fgets($fp,1024))) return true;
}
return false;
}
return file_exists($file);
} /**
* 对象obj 转数组array
* @param $object
* @return mixed
*/
function object2array(&$object) {
$object = json_decode( json_encode( $object),true);
return $object;
} /**
* @param 字节大小 $size
* @param 保留小数位数 $dec
* 格式化文件大小
*/
function file_size($size, $dec=2) {
$a = array("B", "KB", "MB", "GB", "TB", "PB");
$pos = 0;
while ($size >= 1024) {
$size /= 1024;
$pos++;
}
return round($size,$dec)." ".$a[$pos];
} /**
* 隐藏手机号中间4位
* @param $phone
* @return mixed
*/
function hidetel($phone){
$IsWhat = preg_match('/(0[0-9]{2,3}[-]?[2-9][0-9]{6,7}[-]?[0-9]?)/i',$phone);
if($IsWhat == 1){
return preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone);
}else{
return preg_replace('/(1[3587]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);
}
} /**
* 时间格式化
* @param $time
* @return string
*/
function formatTime($time) {
$now_time = time();
$t = $now_time - $time;
$mon = (int) ($t / (86400 * 30));
if ($mon >= 1) {
return '一个月前';
}
$day = (int) ($t / 86400);
if ($day >= 1) {
return $day . '天前';
}
$h = (int) ($t / 3600);
if ($h >= 1) {
return $h . '小时前';
}
$min = (int) ($t / 60);
if ($min >= 1) {
return $min . '分钟前';
}
return '刚刚';
} /**
* 时间格式化
* @param $time
* @return string
*/
function pincheTime($time) {
$today = strtotime(date('Y-m-d')); //今天零点
$here = (int)(($time - $today)/86400) ;
if($here==1){
return '明天';
}
if($here==2) {
return '后天';
}
if($here>=3 && $here<7){
return $here.'天后';
}
if($here>=7 && $here<30){
return '一周后';
}
if($here>=30 && $here<365){
return '一个月后';
}
if($here>=365){
$r = (int)($here/365).'年后';
return $r;
}
return '今天';
} /**
*
* @param 时间戳 $time
* 友好时间显示
* @return
*/
function timeline($time){
if(time()<=$time){
return date("Y-m-d H:i:s",$time);
}else{
$t = time()-$time;
$f = array(
'31536000'=>'年',
'2592000'=>'个月',
'604800'=>'星期',
'86400'=>'天',
'3600'=>'小时',
'60'=>'分钟',
'1'=>'秒'
);
foreach($f as $k=>$v){
if(0 != $c = floor($t/(int)$k)){
return $c.$v.'前';
}
}
}
} /**
* 计算两个时间的时差
* @param $begin_time
* @param $end_time
* @return array
*/
function timeDiff($begin_time, $end_time) {
if ($begin_time < $end_time) {
$starttime = $begin_time;
$endtime = $end_time;
} else {
$starttime = $end_time;
$endtime = $begin_time;
}
$timediff = $endtime - $starttime;
$days = intval( $timediff / 86400 );
$remain = $timediff % 86400;
$hours = sprintf("%02d", intval( $remain / 3600 ));
$remain = $remain % 3600;
$mins = sprintf("%02d", intval( $remain / 60 ));
$secs = sprintf("%02d",$remain % 60);
$res = array( "day" => $days, "hour" => $hours, "min" => $mins, "sec" => $secs );
return $res;
} /**
* 获取当前毫秒时间戳
* @return string
*/
function getMillisecond() {
list($t1, $t2) = explode(' ', microtime());
return $t2 . ceil( ($t1 * 1000) );
} /**
* 生成n位随机数
* @param int $length
* @return string
*/
function createRandomKey($length=32) {
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$str ="";
for ( $i = 0; $i < $length; $i++ ) {
$str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}
return $str;
} /**
* 生成n位包含$string的随机数
* @param int $length
* @param string $str
* @return string
*/
function createRandomStringKey($length=32, $chars = "abcdefghijklmnopqrstuvwxyz0123456789") {
$str ="";
for ( $i = 0; $i < $length; $i++ ) {
$str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}
return $str;
} /**
* post的curl 兼容https
* @param $url
* @param $data
* @return mixed
*/
function curlPostForHttps($url, $data) { $curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json", "Content-Length: ".strlen($data)));
$result = json_decode(curl_exec($curl), true);
curl_close($curl); return $result; } /**
* 16进制颜色值转 rgb
* @param $colour
* @return array|bool
*/
function hex2rgb( $colour ) {
if ( $colour[0] == '#' ) {
$colour = substr( $colour, 1 );
}
if ( strlen( $colour ) == 6 ) {
list( $r, $g, $b ) = array( $colour[0] . $colour[1], $colour[2] . $colour[3], $colour[4] . $colour[5] );
} elseif ( strlen( $colour ) == 3 ) {
list( $r, $g, $b ) = array( $colour[0] . $colour[0], $colour[1] . $colour[1], $colour[2] . $colour[2] );
} else {
return false;
}
$r = hexdec( $r );
$g = hexdec( $g );
$b = hexdec( $b );
return array( 'red' => $r, 'green' => $g, 'blue' => $b );
} /**
* 系统邮件发送函数
* @param $address 收件人邮件
* @param $title 邮件标题
* @param $message 邮件内容
* @return bool
*/
function sendMail($address,$title,$message, $filePath=null) {
$mail = new PHPMailer();
// 设置PHPMailer使用SMTP服务器发送Email
$mail->IsSMTP();
// 设置邮件的字符编码,若不指定,则为'UTF-8'
$mail->CharSet='UTF-8';
// 添加收件人地址,可以多次使用来添加多个收件人
$mail->AddAddress($address);
// SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
$mail->SMTPDebug = 0;
// 设置邮件正文
$mail->Body=$message;
// 设置邮件头的From字段。
$mail->From=config('mail.from');
// 设置发件人名字
$mail->FromName=config('mail.fromName');
// 设置邮件标题
$mail->Subject=$title;
// 设置SMTP服务器。
$mail->Host=config('mail.host');
// SMTP服务器的端口号
$mail->Port = config('mail.port');
// 设置为"需要验证"
$mail->SMTPAuth=true;
// 启用SSL加密为true
$mail->SMTPSecure =true; // 添加附件
if ($filePath != null) {
$mail->AddAttachment($filePath);
}
// 设置用户名和密码。
$mail->Username=config('mail.username');
$mail->Password=config('mail.password');
// 发送邮件。
return($mail->Send());
} /**
* 指定位置插入字符串
* @param $str 原字符串
* @param $i 插入位置
* @param $substr 插入字符串
* @return string 处理后的字符串
*/
function insertToStr($str, $i, $substr){
//指定插入位置前的字符串
$startstr="";
for($j=0; $j<$i; $j++){
$startstr .= $str[$j];
} //指定插入位置后的字符串
$laststr="";
for ($j=$i; $j<strlen($str); $j++){
$laststr .= $str[$j];
} //将插入位置前,要插入的,插入位置后三个字符串拼接起来
$str = $startstr . $substr . $laststr; //返回结果
return $str;
} /**
* 阿拉伯数字转中文数字
* @param $num
* @return string
*/
function ToChinaseNum($num)
{
$char = array("零","一","二","三","四","五","六","七","八","九");
$dw = array("","十","百","千","万","亿","兆");
$retval = "";
$proZero = false;
for($i = 0;$i < strlen($num);$i++)
{
if($i > 0) $temp = (int)(($num % pow (10,$i+1)) / pow (10,$i));
else $temp = (int)($num % pow (10,1)); if($proZero == true && $temp == 0) continue; if($temp == 0) $proZero = true;
else $proZero = false; if($proZero)
{
if($retval == "") continue;
$retval = $char[$temp].$retval;
}
else $retval = $char[$temp].$dw[$i].$retval;
}
if($retval == "一十") $retval = "十";
return $retval;
}

PHP常用代码片段的更多相关文章

  1. C#常用代码片段备忘

    以下是从visual studio中整理出来的常用代码片段,以作备忘 快捷键: eh 用途: 类中事件实现函数模板 private void MyMethod(object sender, Event ...

  2. 36个Android开发常用代码片段

    //36个Android开发常用代码片段 //拨打电话 public static void call(Context context, String phoneNumber) { context.s ...

  3. Jquery学习总结(1)——Jquery常用代码片段汇总

    1. 禁止右键点击 ? 1 2 3 4 5 $(document).ready(function(){     $(document).bind("contextmenu",fun ...

  4. jQuery常用代码片段

    检测IE浏览器 在进行CSS设计时,IE浏览器对开发者及设计师而言无疑是个麻烦.尽管IE6的黑暗时代已经过去,IE浏览器家族的人气亦在不断下滑,但我们仍然有必要对其进行检测.当然,以下片段亦可用于检测 ...

  5. Vue3.0常用代码片段和开发插件

    Vue3 Snippets for Visual Studio Code Vue3 Snippets源码 Vue3 Snippets下载 This extension adds Vue3 Code S ...

  6. Ext.NET Ext.JS 常用代码片段摘录

    引言 最近写代码突然有"一把梭"的感觉, 不管三七二十一先弄上再说. 换别人的说法, 这应该是属于"做项目"风格法吧. 至于知识体系, 可以参考官方或者更权威的 ...

  7. Play常用代码片段 http://www.anool.net/?p=625

    持续更新中: (1)按照降序查询: List<Entity> entities= Entity.find("order by id desc").fetch(2);   ...

  8. Android开发常用代码片段

    拨打电话 public static void call(Context context, String phoneNumber) { context.startActivity( new Inten ...

  9. ide phpStorm常用代码片段设置

    1.打开设置(File -> Settings) 2.如图 3 . 最后,在PHP文件中输入 ll 并按 TAB 即可打出代码块

  10. js 常用代码片段

    一.预加载图像 如果你的网页中需要使用大量初始不可见的(例如,悬停的)图像,那么可以预加载这些图像. function preloadImages(){ for(var i=0;i<argume ...

随机推荐

  1. 【CF1262F】Wrong Answer on test 233(数学)

    题意:给定n道题目,每道题目有k个选项,已知所有正确选项,选对1题得1分 问循环后移一格后总得分s2大于原先总得分s1的方案数 n<=2e5,1<=k<=1e9 思路:特判k=1 e ...

  2. Oracle根据连续性日期的重复数据取最大或最小值日期

    原始数据: 结果数据: 对比两个图,要是不处理连续性中的重复值,我们直接可以用LEAD函数了事,但处理出来的结果貌似多余. 我的思路是先将原始数据中连续性日期有重复值的处理好,即选择最小的一个,比如2 ...

  3. Python列表解析和字典解析

    python笔记_列表解析 相比于for循环,列表解析的语法是由底层c语言实现的,它和使用for循环遍历pyobject对象相比,性能会有很大的提升. 无条件子句的列表解析式 In [2]: [2*i ...

  4. for循环遍历对比

    1.for(var i=0; i<10; i++):遍历数组 var arr = ['11', '22']; for(var i=0; i<arr.length;i++){ console ...

  5. gojs常用API

    操作类API: 添加节点: myDiagram.model.addNodeData(node); var node = {}; node["key"] = "节点Key& ...

  6. Android采用pm命令静默卸载应用

    卸载app的方式有多种,可以直接调用android系统的卸载程序,但是这样会调出android卸载提示框,问题就是真的不好看. 所以采用静默卸载的方式,避免弹出系统提示框. 方法一(调用系统卸载程序) ...

  7. 后盾网lavarel视频项目---4、lavarel和vue都是{{}}表示变量,如何解决冲突

    后盾网lavarel视频项目---4.lavarel和vue都是{{}}表示变量,如何解决冲突 一.总结 一句话总结: @{{videos}}:@符号表示lavarel不处理:textarea nam ...

  8. php 发送邮件(1)代码逻辑

    tp3.2 使用phpmailer发送短信邮箱 准备工作 1.thinkphp3.2 2.qq邮箱(开通过POP3/SMTP服务)在qq邮箱内,设置->账户->POP3/IMAP/SMTP ...

  9. 何为受控组件(controlled component)

    在 HTML 中,类似 , 和 这样的表单元素会维护自身的状态,并基于用户的输入来更新:当用户提交表单时,前面提到的元素的值将随表单一起被发送.但在 React 中会有些不同,包含表单元素的组件将会在 ...

  10. leetcode 200岛屿的个数

    主要考察图搜索: 方法一:染色法,时间O(mn) 遍历一遍,再通过BFS或DFS将所有临近岛屿染色,使用dfs时将numIslands中的bfs换成dfs即可: /***** 遍历所有的点: 只要遇见 ...