/**
* 高效判断远程文件是否存在
* @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. Springboot入门实战, 使用@Value

    今天开始最简单的Springboot应用 entity.Book package com.draymonder.amor.entity; import java.util.List; import o ...

  2. css彩色(渐变)文字

    css彩色文字也称渐变文字 在张鑫旭博客首页看到这效果,就自己研究了一下. 实现方法加个背景然后在根据文本剪切,再把文本填充为透明色让之前设置的背景颜色显示出来即可. -webkit-backgrou ...

  3. R_Studio(关联)对dvdtrans.csv数据进行关联规则分析

    dvdtrans.csv数据:该原始数据仅仅包含了两个字段(ID, Item) 用户ID,商品名称(共30条) #导入arules包 #install.packages("arules&qu ...

  4. [EOJ Monthly2019.11][T1]纸条

    https://acm.ecnu.edu.cn/ 华东师范大学在线评测网站 今天这个题目来自华东师范大学的校赛,比icpc稍难一些,在2019年11月29日周五19:30开始,持续2.5个小时 以下是 ...

  5. C++入门经典-例3.10-根据输入的字符输出字符串

    1:代码如下: // 3.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #inc ...

  6. 如何在DELL R420上部署EXSI虚拟化(服务器上的安装)

    <VMware ESXi>是一款虚拟化软件.软件支持windows平台客户端界面管理,客户端界面与正常使用的虚拟机WMware Workstation界面功能类似VMware ESXI 服 ...

  7. openssl生成秘钥对

    openssl genrsa -out pri.pem openssl rsa -in pri.pem -out pub.pem -pubout 这样就生成秘钥对了,其中pri.pem是私钥,pub. ...

  8. web安全之如何防止CSRF跨站请求伪造(转载)

    https://www.cnblogs.com/blibli/p/7658168.html CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click ...

  9. OpenCV学习笔记(4)——图像上的算术运算

    学习图像上的算术运算,加法,减法,位运算等 1.图像加法 使用cv2.add()将两幅图像进行加法运算,也可以用numpy运算,直接img+img1.两幅图像的大小和类型必须一致,或者第二个图像可以是 ...

  10. IDEA创建各种不同的工程的方法

    javaWeb工程 maven创建javaSE项目 上面点击next: 项目右下角选择自动导入: maven创建javaWeb工程 项目右下角选择自动导入maven项目 上面创建成功之后发现没有jav ...