<?php namespace isslib\Util; use think\Config;/
常用工具类
User: xaxiong
Date: 2016/12/19
Time: 13:47
*/
class Tool{/
- 简单加密处理函数
- @param $data
- @return string
*/
public static function encodeData(\(data</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">urlencode</span>(json_encode(<span style="color: #800080;">\)data));
}/
- 简单解密处理函数
- @param $data
- @return mixed
*/
public static function decodeData(\(data</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> json_decode(<span style="color: #008080;">urldecode</span>(<span style="color: #800080;">\)data),true);
}public static function getPrefix(\(mprefix</span>=''<span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)mprefix)?Config::get('database.prefix'):Config::get('database.prefix').Config::get('database.mprefix')[$mprefix];
}/
- 对excel里的日期进行格式转化
- @param $val 数据
- @param $format 格式
- @return string
*/
public static function GetExceDate(\(val</span>,<span style="color: #800080;">\)format){
if(!empty(\(val</span><span style="color: #000000;">)) { </span><span style="color: #800080;">\)jd = <span style="color: #008080;">GregorianToJD(1, 1, 1970);
\(date</span> = \<span style="color: #008080;">JDToGregorian</span>(<span style="color: #800080;">\)jd + intval(\(val</span>) - 25569<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> list(\)month, $day, \(year) = explode('/',\)date);
if (!empty(\(format</span>)) <span style="color: #800080;">\)date = date(\(format</span>, <span style="color: #008080;">strtotime</span>(<span style="color: #800080;">\)date));
return $date;
}else{
return null;
}
}/
格式化数字
@param $number 要格式化的数值
@param $type 类型 normal,electric
@param \(type 单位后缀 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> numberFormat(<span style="color: #800080;">\)number,\(type</span>='normal',<span style="color: #800080;">\)extUnit='')
{
/
- @var array 数据格式化类型
*/
$FORMAT_TYPE=array(
'normal'=>array(
array(
'base'=>100000000,
'unit'=>'亿'
),
array(
'base'=>10000,
'unit'=>'万'
),
array(
'base'=>1000,
'unit'=>'千'
),
array(
'base'=>1,
'unit'=>''
)
),
'electric'=>array(
array(
'base'=>1000000000000,
'unit'=>'TW'
),
array(
'base'=>1000000000,
'unit'=>'GW'
),
array(
'base'=>1000000,
'unit'=>'MW'
),
array(
'base'=>1000,
'unit'=>'KW'
),
array(
'base'=>1,
'unit'=>'W'
)
)
);\(FORMAT_TYPE_ITEM</span>=<span style="color: #800080;">\)FORMAT_TYPE[\(type</span><span style="color: #000000;">]; </span><span style="color: #008000;">//</span><span style="color: #008000;">\)keys=array_keys(\(FORMAT_TYPE_ITEM); //var_dump(\)FORMAT_TYPE_ITEM[\(keys[0]]);exit();</span> <span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)number)){
\(arr</span>['value']= 0<span style="color: #000000;">; </span><span style="color: #800080;">\)arr['unit']='';
\(arr</span>['base']=1<span style="color: #000000;">; </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)arr;
}
return self::getMaxUnit(\(number</span>,<span style="color: #800080;">\)FORMAT_TYPE_ITEM,$extUnit);}
/
获取最大单位数据
@param $number 数字
@param $AllArr 数据类型配置
@param string $extUnit 单位
@param array $currArr 当前数据
@return array
*/
public static function getMaxUnit(\(number</span>,<span style="color: #800080;">\)AllArr,\(extUnit</span>='',<span style="color: #800080;">\)currArr=array()){
//if(\(index>count(\)desArr)) return \(returnArr;</span> <span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)currArr)){
\(currArr</span>=<span style="color: #800080;">\)AllArr[0];
}
\(key</span>=<span style="color: #800080;">\)currArr['base'];
\(value</span>=<span style="color: #800080;">\)currArr['unit'];\(leaveNum</span>=<span style="color: #800080;">\)number/\(key</span><span style="color: #000000;">; </span><span style="color: #800080;">\)resdata=array();
//arrayStep::getInstance(\(AllArr)->setCurrent(\)key);
if(\(leaveNum</span> > 0 && <span style="color: #800080;">\)leaveNum < 1){
//\(nextArr=arrayStep::getInstance(\)AllArr)->getNext();
\(nextArr</span>=<span style="color: #008080;">next</span>(<span style="color: #800080;">\)AllArr);//var_dump(\(nextArr);</span> <span style="color: #800080;">\)data=self::getMaxUnit(\(number</span>,<span style="color: #800080;">\)AllArr,\(extUnit</span>,<span style="color: #800080;">\)nextArr);
if(!empty(\(data</span>))<span style="color: #0000ff;">return</span> <span style="color: #800080;">\)data;
}else{
\(resdata</span>= <span style="color: #0000ff;">array</span><span style="color: #000000;">( </span>'value'=><span style="color: #008080;">number_format</span>(<span style="color: #008080;">round</span>(<span style="color: #800080;">\)leaveNum)),
'unit'=>\(value</span>.<span style="color: #800080;">\)extUnit,
'base'=>\(key</span><span style="color: #000000;"> ); </span><span style="color: #008000;">//</span><span style="color: #008000;">var_dump(\)resdata);
return $resdata;
exit();
}
}/
- 无限极分类树的生成
- @param $list 数据
- @param string $pk key名称
- @param string $pid 父级编号
- @param string $child
- @param int $root
- @return array
*/
public static function list_to_tree(\(list</span>, <span style="color: #800080;">\)pk='id',\(pid</span> = 'pid',<span style="color: #800080;">\)child = 'child',\(root</span>=0<span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 创建Tree</span> <span style="color: #800080;">\)tree = array();
if(is_array(\(list</span><span style="color: #000000;">)) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 创建基于主键的数组引用</span> <span style="color: #800080;">\)refer = array();
foreach (\(list</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)key => \(data</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)refer[\(data</span>[<span style="color: #800080;">\)pk]] =& \(list</span>[<span style="color: #800080;">\)key];
}
foreach (\(list</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)key => \(data</span><span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 判断是否存在parent</span> <span style="color: #800080;">\)parentId = \(data</span>[<span style="color: #800080;">\)pid];
if (\(root</span> == <span style="color: #800080;">\)parentId) {
\(tree</span>[] =& <span style="color: #800080;">\)list[\(key</span><span style="color: #000000;">]; }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)refer[\(parentId</span><span style="color: #000000;">])) { </span><span style="color: #800080;">\)parent =& \(refer</span>[<span style="color: #800080;">\)parentId];
\(parent</span>[<span style="color: #800080;">\)child][] =& \(list</span>[<span style="color: #800080;">\)key];
}
}
}
}
return $tree;
}/
GET调用接口获取返回值
@param $url url地址
@param array $header 请求头配置
@return mixed
*/
public function curlGET(\(url</span>,<span style="color: #800080;">\)header=array()){\(_SESSION</span>['issTcSession']['get'][<span style="color: #800080;">\)url]['url'] = \(url</span><span style="color: #000000;">; </span><span style="color: #800080;">\)_SESSION['issTcSession']['get'][\(url</span>]['header'] = <span style="color: #800080;">\)header;
// echo \(url;</span> <span style="color: #800080;">\)ch = curl_init();
curl_setopt(\(ch</span>, CURLOPT_URL, <span style="color: #800080;">\)url);
curl_setopt(\(ch</span>, CURLOPT_HTTPHEADER, <span style="color: #800080;">\)header);
curl_setopt(\(ch</span>, CURLOPT_RETURNTRANSFER, 1<span style="color: #000000;">); curl_setopt(</span><span style="color: #800080;">\)ch, CURLOPT_HEADER, 0);
curl_setopt(\(ch</span>, CURLOPT_TIMEOUT,60); <span style="color: #008000;">//</span><span style="color: #008000;">只需要设置一个秒的数量就可以</span> curl_setopt(<span style="color: #800080;">\)ch, CURLOPT_CONNECTTIMEOUT,0);
\(starttime</span>=<span style="color: #008080;">microtime</span>(<span style="color: #0000ff;">true</span><span style="color: #000000;">); </span><span style="color: #800080;">\)temp = curl_exec(\(ch</span><span style="color: #000000;">); </span><span style="color: #800080;">\)endtime=microtime(true);
\(data</span>="---------接口请求总时间:".(<span style="color: #800080;">\)endtime-\(starttime</span>)."-----------------------\n本次接口地址为:<span style="color: #800080;">\)url\n\n\n\n";
\(_SESSION</span>['logdata'.<span style="color: #800080;">\)_GET['a']]=\(data</span><span style="color: #000000;">; curl_close(</span><span style="color: #800080;">\)ch);
return $temp;
}/
POST调用接口获取返回值
@param $url url地址
@param string $data 参数
@param array $header 请求头
@return mixed
*/
public function curlPOST(\(url</span>,<span style="color: #800080;">\)data='',$header=array()){\(_SESSION</span>['issTcSession']['post'][<span style="color: #800080;">\)url]['url'] = \(url</span><span style="color: #000000;">; </span><span style="color: #800080;">\)_SESSION['issTcSession']['post'][\(url</span>]['data'] = <span style="color: #800080;">\)data;
\(_SESSION</span>['issTcSession']['post'][<span style="color: #800080;">\)url]['header'] = \(header</span><span style="color: #000000;">; </span><span style="color: #800080;">\)curl = curl_init(); // 启动一个CURL会话
curl_setopt(\(curl</span>, CURLOPT_URL, <span style="color: #800080;">\)url); // 要访问的地址
curl_setopt(\(curl</span>, CURLOPT_HTTPHEADER, <span style="color: #800080;">\)header);
curl_setopt(\(curl</span>, CURLOPT_SSL_VERIFYPEER, 0); <span style="color: #008000;">//</span><span style="color: #008000;"> 对认证证书来源的检查</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt(\(curl</span>, CURLOPT_USERAGENT, <span style="color: #800080;">\)_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt(\(curl</span>, CURLOPT_FOLLOWLOCATION, 1); <span style="color: #008000;">//</span><span style="color: #008000;"> 使用自动跳转</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt(\(curl</span>, CURLOPT_POST, 1); <span style="color: #008000;">//</span><span style="color: #008000;"> 发送一个常规的Post请求</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_POSTFIELDS, \(data</span>); <span style="color: #008000;">//</span><span style="color: #008000;"> Post提交的数据包</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_TIMEOUT,60); //只需要设置一个秒的数量就可以
curl_setopt(\(curl</span>, CURLOPT_CONNECTTIMEOUT,0<span style="color: #000000;">); curl_setopt(</span><span style="color: #800080;">\)curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回\(starttime</span>=<span style="color: #008080;">microtime</span>(<span style="color: #0000ff;">true</span><span style="color: #000000;">); </span><span style="color: #800080;">\)tmpInfo = curl_exec(\(curl</span>); <span style="color: #008000;">//</span><span style="color: #008000;"> 执行操作 // if (curl_errno(\)curl)) {
// echo 'Errno'.curl_error(\(curl); // }</span> <span style="color: #800080;">\)endtime=microtime(true);
\(data</span>="---------接口请求总时间:".(<span style="color: #800080;">\)endtime-\(starttime</span>)."-----------------------\n本次接口地址为:<span style="color: #800080;">\)url\n\n\n\n";
\(_SESSION</span>['logdata'.<span style="color: #800080;">\)_GET['a']]=\(data</span><span style="color: #000000;">; curl_close(</span><span style="color: #800080;">\)curl); // 关键CURL会话
return $tmpInfo; // 返回数据
}/
json数据返回格式化
@param $data 数据
@param string $status 状态
@param string $errorCode 错误代码
@param string $message 消息
@param null \(total 数据条数 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> jsonReturn(<span style="color: #800080;">\)data,\(status</span>='1',<span style="color: #800080;">\)errorCode='1',\(message</span>='',<span style="color: #800080;">\)total=null)
{if(\(data</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)json['status'] = 1;
\(json</span>['errorCode'] = <span style="color: #800080;">\)errorCode;
\(json</span>['errorMsg'] = '请求成功'<span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)total)
{
\(json</span>['total'] = <span style="color: #800080;">\)total;
}
else
{
\(json</span>['total'] = <span style="color: #008080;">count</span>(<span style="color: #800080;">\)data);
}
\(json</span>['data'] = <span style="color: #800080;">\)data;
}
else
{
if(\(status</span> != '1'<span style="color: #000000;">) { </span><span style="color: #800080;">\)json['status'] = \(status</span><span style="color: #000000;">; </span><span style="color: #800080;">\)json['errorCode'] = \(errorCode</span><span style="color: #000000;">; </span><span style="color: #800080;">\)json['errorMsg'] =empty(\(message</span>)? '请求失败':<span style="color: #800080;">\)message;
}
else
{
\(json</span>['status'] = '0'<span style="color: #000000;">; </span><span style="color: #800080;">\)json['errorCode'] = '0';
\(json</span>['errorMsg'] =<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)message)? '请求失败':\(message</span><span style="color: #000000;">; } </span><span style="color: #800080;">\)json['total'] = '0';
\(json</span>['data'] = <span style="color: #0000ff;">array</span><span style="color: #000000;">(); } </span><span style="color: #008080;">header</span>("Content-type: application/json"<span style="color: #000000;">); </span><span style="color: #0000ff;">echo</span> json_encode(<span style="color: #800080;">\)json);}
/
- 保留小数
- @param $number 数字
- @param int $num 几位小数
- @return float|int
*/
public function decimal(\(number</span>,<span style="color: #800080;">\)num=1){
\(number</span> = <span style="color: #008080;">round</span>(<span style="color: #800080;">\)number,\(num</span><span style="color: #000000;">); </span><span style="color: #800080;">\)number1 = intval(\(number</span><span style="color: #000000;">); </span><span style="color: #800080;">\)number2 = \(number</span> > <span style="color: #800080;">\)number1 ? \(number</span> : <span style="color: #800080;">\)number1;
return $number2;}
/
数组排序
@param $arr 数组
@param $keys key名
@param string $type 排序类型 asc,desc
@param int $is0
@param int $isK
@return array
*/
function arraySort(\(arr</span>, <span style="color: #800080;">\)keys, \(type</span> = 'asc',<span style="color: #800080;">\)is0=0,\(isK</span>=0<span style="color: #000000;">) { </span><span style="color: #800080;">\)keysvalue = \(new_array</span> = <span style="color: #0000ff;">array</span><span style="color: #000000;">(); </span><span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">\)arr as \(k</span> => <span style="color: #800080;">\)v){
\(keysvalue</span>[<span style="color: #800080;">\)k] = \(v</span>[<span style="color: #800080;">\)keys];
}
\(type</span> == 'asc' ? <span style="color: #008080;">asort</span>(<span style="color: #800080;">\)keysvalue) : arsort(\(keysvalue</span><span style="color: #000000;">); </span><span style="color: #008080;">reset</span>(<span style="color: #800080;">\)keysvalue);
foreach (\(keysvalue</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)k => $v) {</span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$isK</span> == 1<span style="color: #000000;">) { </span><span style="color: #800080;">$new_array</span>[<span style="color: #800080;">$k</span>] = <span style="color: #800080;">$arr</span>[<span style="color: #800080;">$k</span><span style="color: #000000;">]; } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #800080;">$new_array</span>[] = <span style="color: #800080;">$arr</span>[<span style="color: #800080;">$k</span><span style="color: #000000;">]; }
}
if(\(is0</span> == 1<span style="color: #000000;">) { </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)new_array as \(vo_is0</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)vo_is0[\(keys</span>] > 0<span style="color: #000000;">){ </span><span style="color: #800080;">\)new_array_s[] = \(vo_is0</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)new_array_s;
}
return $new_array;
}/
- 判断是否 为空 给 后端数据转成null
- @param $data
- @param int $isStr 0表示不转字符串,1:表示传成字符串
- @return mixed
*/
function arrIsNull(\(data</span>,<span style="color: #800080;">\)isStr=0)
{
foreach(\(data</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)k=>&\(vo</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)vo) && (\(k</span> != 'startRow') && (<span style="color: #800080;">\)k != 'endRow') && (\(k</span> != 'education'<span style="color: #000000;">)) { </span><span style="color: #800080;">\)vo = null;
}else{
if(\(isStr</span><span style="color: #000000;">){ </span><span style="color: #800080;">\)vo .= "";
}
}
}
return $data;
}/
- 着色
- @param $colorarr
- @param $data
- @return mixed
*/
function color2data(\(colorarr</span>,<span style="color: #800080;">\)data){
\(count</span> = <span style="color: #008080;">count</span>(<span style="color: #800080;">\)colorarr);
\(count_data</span> = <span style="color: #008080;">count</span>(<span style="color: #800080;">\)data);
\(d</span> = <span style="color: #008080;">intval</span>(<span style="color: #800080;">\)count_data/\(count</span><span style="color: #000000;">); </span><span style="color: #800080;">\)d = \(d</span> <= 1 ? 1 : <span style="color: #800080;">\)d;
\(c</span> = 0<span style="color: #000000;">; </span><span style="color: #800080;">\)n = 1;
foreach(\(data</span> <span style="color: #0000ff;">as</span> &<span style="color: #800080;">\)vo)
{
\(temp</span>['style'] = 'esriSFSSolid'<span style="color: #000000;">; </span><span style="color: #800080;">\)temp['color'] = \(colorarr</span>[<span style="color: #800080;">\)c];
\(outline</span>['color'] = <span style="color: #0000ff;">array</span>(106, 212, 238,255<span style="color: #000000;">); </span><span style="color: #800080;">\)outline['width'] = 1;
\(temp</span>['outline'] = <span style="color: #800080;">\)outline;
\(vo</span>['coverStyle'] =<span style="color: #800080;">\)temp;
if(\(n</span> == <span style="color: #800080;">\)d)
{
if(\(c</span> < <span style="color: #800080;">\)count-1)
{
\(c</span>++<span style="color: #000000;">; } </span><span style="color: #800080;">\)n = 1;
}
else
{
\(n</span>++<span style="color: #000000;">; } } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)data;
}/
- 截取字符串
- @param $str
- @param $start
- @param $lenth
- @return string
*/
public function subStr(\(str</span>, <span style="color: #800080;">\)start, \(lenth</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)str1 = mb_substr(\(str</span>,<span style="color: #800080;">\)start,\(lenth</span>,'UTF8'<span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)str==\(str1</span> ? <span style="color: #800080;">\)str : $str1.'...';
}/
截取字符串
@param $str
@return int
*/
public function str2num(\(str</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)num1 = (int)\(str</span><span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)num1 == $str)
{</span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$num1</span><span style="color: #000000;">;
}
else
{
return $str;
}}
/
- 字符串转数组转字符串
- @param $data
- @return mixed
*/
public function str2arr2str(\(data</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)data as &\(vo</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)vo as &\(vo1</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_array</span>(<span style="color: #800080;">\)vo1))
{
\(vo1</span> = json_encode(<span style="color: #800080;">\)vo1);
// \(vo1 = implode(',',\)vo1);
}
}
}
return $data;
}function letter(\(value</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)letter = '';
do {
\(letter</span> = <span style="color: #008080;">chr</span>(65 + (<span style="color: #800080;">\)value % 26)) . \(letter</span><span style="color: #000000;">; </span><span style="color: #800080;">\)temp = intval(\(value</span> / 26<span style="color: #000000;">); </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">\)temp > 0) {
\(value</span> = <span style="color: #800080;">\)value - 26;
}
\(value</span> = <span style="color: #008080;">intval</span>(<span style="color: #800080;">\)value / 26);
} while (\(temp</span> != 0<span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)letter;
}/
调试函数
@param unknown $str 要叠加字符的变量名
@param unknown $addstr 要添加的字符
@param string $ifdel 是否将之前的变量清空
@return string
*/
public static function halt(\(logFile</span>,<span style="color: #800080;">\)str,\(ifdel</span>=<span style="color: #0000ff;">false</span><span style="color: #000000;">) { </span><span style="color: #008080;">header</span>("Content-type: text/html; charset=utf-8"<span style="color: #000000;">); </span><span style="color: #800080;">\)logname = C('SOURCE_DATA')['logs_dir'] . \(logFile</span> . '-' . <span style="color: #008080;">date</span>("Ymd") . '.html'<span style="color: #000000;">; </span><span style="color: #800080;">\)tmpstr = date("Y-m-d h:i:sa") . ' ';if (\(ifdel</span><span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;">清除日志文件内容</span> @<span style="color: #008080;">file_put_contents</span>(<span style="color: #800080;">\)logname, "");
}
if (!empty(\(str</span><span style="color: #000000;">)) { </span><span style="color: #800080;">\)tmpstr .= '--' . \(str</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> { </span><span style="color: #008000;">//</span><span style="color: #008000;">将日导写入日导文件</span> self::writeFile(<span style="color: #800080;">\)logname, \(tmpstr</span> . "\r\n", 'a+'<span style="color: #000000;">); } </span><span style="color: #0000ff;">catch</span> (<span style="color: #0000ff;">Exception</span> <span style="color: #800080;">\)e) {
echo '写入日志出现错误!,错误内容为:' . \(e</span>-><span style="color: #000000;">getMessage(); </span><span style="color: #008000;">//</span><span style="color: #008000;">\)this->writeFile(\(logname,\)str.'Error:'.$e);
}
}/
- 写文件
- @param string $file 文件路径
- @param string $str 写入内容
- @param char \(mode 写入模式 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> writeFile(<span style="color: #800080;">\)file,\(str</span>,<span style="color: #800080;">\)mode='w')
{
\(oldmask</span> = @<span style="color: #008080;">umask</span>(0<span style="color: #000000;">); </span><span style="color: #800080;">\)fp = @fopen(\(file</span>,<span style="color: #800080;">\)mode);
@flock(\(fp</span>, 3<span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(!<span style="color: #800080;">\)fp)
{
Return false;
}
else
{
@fwrite(\(fp</span>,<span style="color: #800080;">\)str);
@fclose(\(fp</span><span style="color: #000000;">); @</span><span style="color: #008080;">umask</span>(<span style="color: #800080;">\)oldmask);
Return true;
}
}/
- gbk 转 utf8
- @param $str
- @return string
*/
public static function gbk_to_utf8(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> mb_convert_encoding(<span style="color: #800080;">\)str, 'utf-8', 'gbk');
}/
- utf8 转 gbk
- @param $str
- @return string
*/
public static function utf8_to_gbk(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> mb_convert_encoding(<span style="color: #800080;">\)str, 'gbk', 'utf-8');
}/
- 是否为windows操作系统,
- @return bool true:windows,false:其它操作系统
/
function isWinOS(){
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') return true;
else return false;
}
/*- 获取当前操作系统
- @return string
*/
function getOS(){
\(os</span>=''<span style="color: #000000;">; </span><span style="color: #800080;">\)Agent=\(_SERVER</span>['HTTP_USER_AGENT'<span style="color: #000000;">]; </span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&strpos(\(Agent</span>, '95'<span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows 95';
}elseif(eregi('win 9x',\(Agent</span>)&&<span style="color: #008080;">strpos</span>(<span style="color: #800080;">\)Agent, '4.90')){
\(os</span>='Windows ME'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&ereg('98',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows 98';
}elseif(eregi('win',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('nt 5.0',<span style="color: #800080;">\)Agent)){
\(os</span>='Windows 2000'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&eregi('nt 6.0',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows Vista';
}elseif(eregi('win',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('nt 6.1',<span style="color: #800080;">\)Agent)){
\(os</span>='Windows 7'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&eregi('nt 5.1',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows XP';
}elseif(eregi('win',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('nt',<span style="color: #800080;">\)Agent)){
\(os</span>='Windows NT'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&ereg('32',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows 32';
}elseif(eregi('linux',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Linux';
}elseif(eregi('unix',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Unix';
}else if(eregi('sun',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('os',<span style="color: #800080;">\)Agent)){
\(os</span>='SunOS'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('ibm',<span style="color: #800080;">\)Agent)&&eregi('os',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='IBM OS/2';
}elseif(eregi('Mac',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('PC',<span style="color: #800080;">\)Agent)){
\(os</span>='Macintosh'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('PowerPC',<span style="color: #800080;">\)Agent)){
\(os</span>='PowerPC'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('AIX',<span style="color: #800080;">\)Agent)){
\(os</span>='AIX'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('HPUX',<span style="color: #800080;">\)Agent)){
\(os</span>='HPUX'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('NetBSD',<span style="color: #800080;">\)Agent)){
\(os</span>='NetBSD'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('BSD',<span style="color: #800080;">\)Agent)){
\(os</span>='BSD'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">ereg</span>('OSF1',<span style="color: #800080;">\)Agent)){
\(os</span>='OSF1'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">ereg</span>('IRIX',<span style="color: #800080;">\)Agent)){
\(os</span>='IRIX'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('FreeBSD',<span style="color: #800080;">\)Agent)){
\(os</span>='FreeBSD'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #800080;">\)os==''){
\(os</span>='Unknown'<span style="color: #000000;">; } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)os;
}}
/对excel里的日期进行格式转化/
function GetData(\(val</span><span style="color: #000000;">){ </span><span style="color: #800080;">\)jd = <span style="color: #008080;">GregorianToJD(1, 1, 1970);
\(gregorian</span> = \<span style="color: #008080;">JDToGregorian</span>(<span style="color: #800080;">\)jd+intval(\(val</span>)-25569<span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)gregorian;/显示格式为 “月/日/年” /
}/根据数组中的某个键值大小进行排序,仅支持二维数组
@param array $array 排序数组
@param string $key 键值
@param bool $asc 默认正序
@return array 排序后数组/function arraySortByKey(array \(array</span>, <span style="color: #800080;">\)key, \(asc</span> = <span style="color: #0000ff;">true</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)result = array(); // 整理出准备排序的数组
\(iddata</span>=<span style="color: #0000ff;">array</span><span style="color: #000000;">(); </span><span style="color: #800080;">\)baifendata=array();</span><span style="color: #0000ff;">foreach</span> ( <span style="color: #800080;">$array</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$k</span> => &<span style="color: #800080;">$v</span><span style="color: #000000;"> ) { </span><span style="color: #800080;">$values</span>[<span style="color: #800080;">$k</span>] = <span style="color: #0000ff;">isset</span>(<span style="color: #800080;">$v</span>[<span style="color: #800080;">$key</span>]) ? <span style="color: #800080;">$v</span>[<span style="color: #800080;">$key</span>] : ''<span style="color: #000000;">; } </span><span style="color: #0000ff;">unset</span>(<span style="color: #800080;">$v</span>); <span style="color: #008000;">//</span><span style="color: #008000;"> 对需要排序键值进行排序 </span> <span style="color: #800080;">$asc</span> ? <span style="color: #008080;">asort</span>(<span style="color: #800080;">$values</span>) : <span style="color: #008080;">arsort</span>(<span style="color: #800080;">$values</span>); <span style="color: #008000;">//</span><span style="color: #008000;"> 重新排列原有数组 </span> <span style="color: #0000ff;">foreach</span> ( <span style="color: #800080;">$values</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$k</span> => <span style="color: #800080;">$v</span><span style="color: #000000;"> ) { </span><span style="color: #800080;">$result</span>[<span style="color: #800080;">$k</span>] = <span style="color: #800080;">$array</span>[<span style="color: #800080;">$k</span><span style="color: #000000;">]; } </span><span style="color: #800080;">$count</span>=<span style="color: #008080;">count</span>(<span style="color: #800080;">$result</span><span style="color: #000000;">); </span><span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">$result</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$key</span> => <span style="color: #800080;">$value</span><span style="color: #000000;">) { </span><span style="color: #800080;">$iddata</span>[]=<span style="color: #800080;">$value</span>['id'<span style="color: #000000;">]; } </span><span style="color: #0000ff;">for</span> (<span style="color: #800080;">$i</span> = 0; <span style="color: #800080;">$i</span> < <span style="color: #800080;">$count</span>; <span style="color: #800080;">$i</span>++<span style="color: #000000;">) { </span><span style="color: #800080;">$baifendata</span>[]=<span style="color: #008080;">round</span>((<span style="color: #800080;">$count</span> - <span style="color: #800080;">$i</span>) / <span style="color: #800080;">$count</span> *100).'%'<span style="color: #000000;">; } </span><span style="color: #800080;">$result</span> =<span style="color: #008080;">array_combine</span>(<span style="color: #800080;">$iddata</span>,<span style="color: #800080;">$baifendata</span><span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$result</span><span style="color: #000000;">;
}
/** * 无限级分类,直接获取节点树 * @param unknown $list 数据集合 * @param string $pk 主键字段 * @param string $pid 父节点id对应字段 * @param string $child 子节点id对应字段 * @param number $root 从第几级开始查询 * @return multitype:unknown */ function list_to_tree($list, $pk='id',$pid = 'pid',$child = 'child',$root=0) { // 创建Tree $tree = array(); if(is_array($list)) { // 创建基于主键的数组引用 $refer = array(); foreach ($list as $key => $data) { $refer[$data[$pk]] =& $list[$key]; } foreach ($list as $key => $data) { // 判断是否存在parent $parentId = $data[$pid]; if ($root == $parentId) { $tree[] =& $list[$key]; }else{ if (isset($refer[$parentId])) { $parent =& $refer[$parentId]; $parent[$child][] =& $list[$key]; } } } } return $tree; } //无限极分类返回列表行记录 /** * * @param unknown $cate_info_sort 返回的数据 * @param unknown $data 原始数据 * @param string $pk 表主键 * @param string $pid_name 表父字段id * @param number $pid 开始的父字段id * @param string $kk 分割线 */ function cate_sort_role(&$cate_info_sort,$data,$pk='id',$pid_name="pid",$pid=0,$kk="|"){ foreach($data as $k=> $v){ if($v[$pid_name]==$pid){ foreach ($v as $ke=>$vl){ $cate_info_sort[$k][$ke] = $vl; } $cate_info_sort[$k]["kk"] = $kk; $pos = strpos($kk, "--"); if($pos === false){ $cate_info_sort[$k]["sun"] = 0; }else{ $cate_info_sort[$k]["sun"] = 1; } cate_sort_role($cate_info_sort,$data ,$pk,$pid_name,$v[$pk]," ".$kk."--"); } } }/
- 获取客户端IP地址
- @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
- @param boolean $adv 是否进行高级模式获取(有可能被伪装)
- @return mixed
*/
function get_client_ip(\(type</span> = 0,<span style="color: #800080;">\)adv=false) {
\(type</span> = <span style="color: #800080;">\)type ? 1 : 0;
static \(ip</span> = <span style="color: #0000ff;">NULL</span><span style="color: #000000;">; </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">\)ip !== NULL) return \(ip</span>[<span style="color: #800080;">\)type];
if(\(adv</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)_SERVER['HTTP_X_FORWARDED_FOR'])) {
\(arr</span> = <span style="color: #008080;">explode</span>(',', <span style="color: #800080;">\)_SERVER['HTTP_X_FORWARDED_FOR']);
\(pos</span> = <span style="color: #008080;">array_search</span>('unknown',<span style="color: #800080;">\)arr);
if(false !== \(pos</span>) <span style="color: #0000ff;">unset</span>(<span style="color: #800080;">\)arr[\(pos</span><span style="color: #000000;">]); </span><span style="color: #800080;">\)ip = trim(\(arr</span>[0<span style="color: #000000;">]); }</span><span style="color: #0000ff;">elseif</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)_SERVER['HTTP_CLIENT_IP'])) {
\(ip</span> = <span style="color: #800080;">\)_SERVER['HTTP_CLIENT_IP'];
}elseif (isset(\(_SERVER</span>['REMOTE_ADDR'<span style="color: #000000;">])) { </span><span style="color: #800080;">\)ip = \(_SERVER</span>['REMOTE_ADDR'<span style="color: #000000;">]; } }</span><span style="color: #0000ff;">elseif</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)_SERVER['REMOTE_ADDR'])) {
\(ip</span> = <span style="color: #800080;">\)_SERVER['REMOTE_ADDR'];
}
// IP地址合法验证
\(long</span> = <span style="color: #008080;">sprintf</span>("%u",<span style="color: #008080;">ip2long</span>(<span style="color: #800080;">\)ip));
\(ip</span> = <span style="color: #800080;">\)long ? array(\(ip</span>, <span style="color: #800080;">\)long) : array('0.0.0.0', 0);
return \(ip</span>[<span style="color: #800080;">\)type];
}/
将字符串转换为数组
@param string $data 字符串
@return array 返回数组格式,如果,data为空,则返回空数组
/
function string2array(\(data</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)data = trim(\(data</span><span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)data == '') return array();
if(strpos(\(data</span>, 'array')===0<span style="color: #000000;">){ @</span><span style="color: #0000ff;">eval</span>("\$array = <span style="color: #800080;">\)data;");
}else{
if(strpos(\(data</span>, '{\\')===0) <span style="color: #800080;">\)data = stripslashes(\(data</span><span style="color: #000000;">); </span><span style="color: #800080;">\)array=json_decode($data,true);
// if(strtolower(CHARSET)=='gbk'){
// $array = mult_iconv("UTF-8", "GBK//IGNORE", \(array); // }</span> <span style="color: #000000;"> } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)array;
}
/*将数组转换为字符串
@param array $data 数组
@param bool $isformdata 如果为0,则不使用new_stripslashes处理,可选参数,默认为1
@return string 返回字符串,如果,data为空,则返回空
*/
function array2string(\(data</span>, <span style="color: #800080;">\)isformdata = 1) {
if(\(data</span> == '' || <span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)data)) return '';if(\(isformdata</span>) <span style="color: #800080;">\)data = new_stripslashes(\(data</span><span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">strtolower</span>(CHARSET)=='gbk'<span style="color: #000000;">){ </span><span style="color: #800080;">\)data = mult_iconv("GBK", "UTF-8", \(data</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">version_compare</span>(<span style="color: #ff00ff;">PHP_VERSION</span>,'5.3.0','<'<span style="color: #000000;">)){ </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">addslashes</span>(json_encode(<span style="color: #800080;">\)data));
}else{
return addslashes(json_encode($data,JSON_FORCE_OBJECT));
}
}/
- 返回经htmlspecialchars处理过的字符串或数组
- @param $obj 需要处理的字符串或数组
- @return mixed
*/
function new_html_special_chars(\(string</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)encoding = 'utf-8';
if(strtolower(CHARSET)=='gbk') \(encoding</span> = 'ISO-8859-15'<span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(!<span style="color: #008080;">is_array</span>(<span style="color: #800080;">\)string)) return htmlspecialchars(\(string</span>,ENT_QUOTES,<span style="color: #800080;">\)encoding);
foreach(\(string</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)key => \(val</span>) <span style="color: #800080;">\)string[\(key</span>] = new_html_special_chars(<span style="color: #800080;">\)val);
return $string;
}function GetMonth(\(sign</span>="1"<span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;">得到系统的年月 </span> <span style="color: #800080;">\)tmp_date=date("Ym");
//切割出年份
\(tmp_year</span>=<span style="color: #008080;">substr</span>(<span style="color: #800080;">\)tmp_date,0,4);
//切割出月份
\(tmp_mon</span> =<span style="color: #008080;">substr</span>(<span style="color: #800080;">\)tmp_date,4,2);
\(tmp_nextmonth</span>=<span style="color: #008080;">mktime</span>(0,0,0,<span style="color: #800080;">\)tmp_mon+1,1,\(tmp_year</span><span style="color: #000000;">); </span><span style="color: #800080;">\)tmp_forwardmonth=mktime(0,0,0,\(tmp_mon</span>-1,1,<span style="color: #800080;">\)tmp_year);
if(\(sign</span>==0<span style="color: #000000;">){ </span><span style="color: #008000;">//</span><span style="color: #008000;">得到当前月的下一个月 </span> <span style="color: #0000ff;">return</span> <span style="color: #800080;">\)fm_next_month=date("Ym",\(tmp_nextmonth</span><span style="color: #000000;">); }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #008000;">//</span><span style="color: #008000;">得到当前月的上一个月 </span> <span style="color: #0000ff;">return</span> <span style="color: #800080;">\)fm_forward_month=date("Ym",$tmp_forwardmonth);
}
}
<?php namespace isslib\Util; use think\Config; use think\Db; use think\Debug;/
常用工具类
User: xaxiong
Date: 2016/12/19
Time: 13:47
*/
class Tool{/
- 简单加密处理函数
- @param $data
- @return string
*/
public static function encodeData(\(data</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">urlencode</span>(json_encode(<span style="color: #800080;">\)data));
}/
- 简单解密处理函数
- @param $data
- @return mixed
*/
public static function decodeData(\(data</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> json_decode(<span style="color: #008080;">urldecode</span>(<span style="color: #800080;">\)data),true);
}/
- 获取数据表前缀
- @param string $mprefix 取值为:'origial':原始表;'dest':业务表;'system':系统表,标准知识库模型;'common':公共表
- @param bool $isprefix true 需要前缀,false不需要前缀
- @return mixed|string
*/
public static function getPrefix(\(mprefix</span>='',<span style="color: #800080;">\)isprefix=true){
if(\(isprefix</span><span style="color: #000000;">) </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)mprefix)?Config::get('database.prefix'):Config::get('database.prefix').Config::get('database.mprefix')[\(mprefix</span><span style="color: #000000;">]; </span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)mprefix)?'':Config::get('database.mprefix')[$mprefix];
}/
- 对excel里的日期进行格式转化
- @param $val 数据
- @param $format 格式
- @return string
*/
public static function GetExceDate(\(val</span>,<span style="color: #800080;">\)format){
if(!empty(\(val</span><span style="color: #000000;">)) { </span><span style="color: #800080;">\)jd = <span style="color: #008080;">GregorianToJD(1, 1, 1970);
\(date</span> = \<span style="color: #008080;">JDToGregorian</span>(<span style="color: #800080;">\)jd + intval(\(val</span>) - 25569<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> list(\)month, $day, \(year) = explode('/',\)date);
if (!empty(\(format</span>)) <span style="color: #800080;">\)date = date(\(format</span>, <span style="color: #008080;">strtotime</span>(<span style="color: #800080;">\)date));
return $date;
}else{
return null;
}
}/
格式化数字
@param $number 要格式化的数值
@param $type 类型 normal,electric
@param \(type 单位后缀 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> numberFormat(<span style="color: #800080;">\)number,\(type</span>='normal',<span style="color: #800080;">\)extUnit='')
{
/
- @var array 数据格式化类型
*/
$FORMAT_TYPE=array(
'normal'=>array(
array(
'base'=>100000000,
'unit'=>'亿'
),
array(
'base'=>10000,
'unit'=>'万'
),
array(
'base'=>1000,
'unit'=>'千'
),
array(
'base'=>1,
'unit'=>''
)
),
'electric'=>array(
array(
'base'=>1000000000000,
'unit'=>'TW'
),
array(
'base'=>1000000000,
'unit'=>'GW'
),
array(
'base'=>1000000,
'unit'=>'MW'
),
array(
'base'=>1000,
'unit'=>'KW'
),
array(
'base'=>1,
'unit'=>'W'
)
)
);\(FORMAT_TYPE_ITEM</span>=<span style="color: #800080;">\)FORMAT_TYPE[\(type</span><span style="color: #000000;">]; </span><span style="color: #008000;">//</span><span style="color: #008000;">\)keys=array_keys(\(FORMAT_TYPE_ITEM); //var_dump(\)FORMAT_TYPE_ITEM[\(keys[0]]);exit();</span> <span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)number)){
\(arr</span>['value']= 0<span style="color: #000000;">; </span><span style="color: #800080;">\)arr['unit']='';
\(arr</span>['base']=1<span style="color: #000000;">; </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)arr;
}
return self::getMaxUnit(\(number</span>,<span style="color: #800080;">\)FORMAT_TYPE_ITEM,$extUnit);}
/
获取最大单位数据
@param $number 数字
@param $AllArr 数据类型配置
@param string $extUnit 单位
@param array $currArr 当前数据
@return array
*/
public static function getMaxUnit(\(number</span>,<span style="color: #800080;">\)AllArr,\(extUnit</span>='',<span style="color: #800080;">\)currArr=array()){
//if(\(index>count(\)desArr)) return \(returnArr;</span> <span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)currArr)){
\(currArr</span>=<span style="color: #800080;">\)AllArr[0];
}
\(key</span>=<span style="color: #800080;">\)currArr['base'];
\(value</span>=<span style="color: #800080;">\)currArr['unit'];\(leaveNum</span>=<span style="color: #800080;">\)number/\(key</span><span style="color: #000000;">; </span><span style="color: #800080;">\)resdata=array();
//arrayStep::getInstance(\(AllArr)->setCurrent(\)key);
if(\(leaveNum</span> > 0 && <span style="color: #800080;">\)leaveNum < 1){
//\(nextArr=arrayStep::getInstance(\)AllArr)->getNext();
\(nextArr</span>=<span style="color: #008080;">next</span>(<span style="color: #800080;">\)AllArr);//var_dump(\(nextArr);</span> <span style="color: #800080;">\)data=self::getMaxUnit(\(number</span>,<span style="color: #800080;">\)AllArr,\(extUnit</span>,<span style="color: #800080;">\)nextArr);
if(!empty(\(data</span>))<span style="color: #0000ff;">return</span> <span style="color: #800080;">\)data;
}else{
\(resdata</span>= <span style="color: #0000ff;">array</span><span style="color: #000000;">( </span>'value'=><span style="color: #008080;">number_format</span>(<span style="color: #008080;">round</span>(<span style="color: #800080;">\)leaveNum)),
'unit'=>\(value</span>.<span style="color: #800080;">\)extUnit,
'base'=>\(key</span><span style="color: #000000;"> ); </span><span style="color: #008000;">//</span><span style="color: #008000;">var_dump(\)resdata);
return $resdata;
exit();
}
}/
- 无限级分类,直接获取节点树
- @param unknown $list 数据集合
- @param string $pk 主键字段
- @param string $pid 父节点id对应字段
- @param string $child 子节点id对应字段
- @param number $root 从第几级开始查询
- @return multitype:unknown
/
public static function list_to_tree(\(list</span>, <span style="color: #800080;">\)pk='id',\(pid</span> = 'pid',<span style="color: #800080;">\)child = 'child',\(root</span>=0<span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 创建Tree</span> <span style="color: #800080;">\)tree = array();
if(is_array(\(list</span><span style="color: #000000;">)) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 创建基于主键的数组引用</span> <span style="color: #800080;">\)refer = array();
foreach (\(list</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)key => \(data</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)refer[\(data</span>[<span style="color: #800080;">\)pk]] =& \(list</span>[<span style="color: #800080;">\)key];
}
foreach (\(list</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)key => \(data</span><span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 判断是否存在parent</span> <span style="color: #800080;">\)parentId = \(data</span>[<span style="color: #800080;">\)pid];
if (\(root</span> == <span style="color: #800080;">\)parentId) {
\(tree</span>[] =& <span style="color: #800080;">\)list[\(key</span><span style="color: #000000;">]; }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)refer[\(parentId</span><span style="color: #000000;">])) { </span><span style="color: #800080;">\)parent =& \(refer</span>[<span style="color: #800080;">\)parentId];
\(parent</span>[<span style="color: #800080;">\)child][] =& \(list</span>[<span style="color: #800080;">\)key];
}
}
}
}
return $tree;
}
//无限极分类返回列表行记录
/*- @param unknown $cate_info_sort 返回的数据
- @param unknown $data 原始数据
- @param string $pk 表主键
- @param string $pid_name 表父字段id
- @param number $pid 开始的父字段id
- @param string \(kk 分割线 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> cate_sort(&<span style="color: #800080;">\)cate_info_sort,\(data</span>,<span style="color: #800080;">\)pk='id',\(pid_name</span>="pid",<span style="color: #800080;">\)pid=0,\(kk</span>="|"<span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)data as \(k</span>=> <span style="color: #800080;">\)v){
if(\(v</span>[<span style="color: #800080;">\)pid_name]==\(pid</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">\)v as \(ke</span>=><span style="color: #800080;">\)vl){
\(cate_info_sort</span>[<span style="color: #800080;">\)k][\(ke</span>] = <span style="color: #800080;">\)vl;
}
\(cate_info_sort</span>[<span style="color: #800080;">\)k]["kk"] = \(kk</span><span style="color: #000000;">; </span><span style="color: #800080;">\)pos = strpos(\(kk</span>, "--"<span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)pos === false){
\(cate_info_sort</span>[<span style="color: #800080;">\)k]["sun"] = 0;
}else{
\(cate_info_sort</span>[<span style="color: #800080;">\)k]["sun"] = 1;
}
self::cate_sort(\(cate_info_sort</span>,<span style="color: #800080;">\)data ,\(pk</span>,<span style="color: #800080;">\)pid_name,\(v</span>[<span style="color: #800080;">\)pk]," ".$kk."--");
}
}
}/
GET调用接口获取返回值
@param $url url地址
@param array $header 请求头配置
@return mixed
*/
public static function curlGET(\(url</span>,<span style="color: #800080;">\)header=array()){\(_SESSION</span>['issTcSession']['get'][<span style="color: #800080;">\)url]['url'] = \(url</span><span style="color: #000000;">; </span><span style="color: #800080;">\)_SESSION['issTcSession']['get'][\(url</span>]['header'] = <span style="color: #800080;">\)header;
// echo \(url;</span> <span style="color: #800080;">\)ch = curl_init();
curl_setopt(\(ch</span>, CURLOPT_URL, <span style="color: #800080;">\)url);
curl_setopt(\(ch</span>, CURLOPT_HTTPHEADER, <span style="color: #800080;">\)header);
curl_setopt(\(ch</span>, CURLOPT_RETURNTRANSFER, 1<span style="color: #000000;">); curl_setopt(</span><span style="color: #800080;">\)ch, CURLOPT_HEADER, 0);
curl_setopt(\(ch</span>, CURLOPT_TIMEOUT,60); <span style="color: #008000;">//</span><span style="color: #008000;">只需要设置一个秒的数量就可以</span> curl_setopt(<span style="color: #800080;">\)ch, CURLOPT_CONNECTTIMEOUT,0);
\(starttime</span>=<span style="color: #008080;">microtime</span>(<span style="color: #0000ff;">true</span><span style="color: #000000;">); </span><span style="color: #800080;">\)temp = curl_exec(\(ch</span><span style="color: #000000;">); </span><span style="color: #800080;">\)endtime=microtime(true);
\(data</span>="---------接口请求总时间:".(<span style="color: #800080;">\)endtime-\(starttime</span>)."-----------------------\n本次接口地址为:<span style="color: #800080;">\)url\n\n\n\n";
\(_SESSION</span>['logdata'.<span style="color: #800080;">\)_GET['a']]=\(data</span><span style="color: #000000;">; curl_close(</span><span style="color: #800080;">\)ch);
return $temp;
}/
POST调用接口获取返回值
@param $url url地址
@param string $data 参数
@param array $header 请求头
@return mixed
*/
public static function curlPOST(\(url</span>,<span style="color: #800080;">\)data='',$header=array()){\(_SESSION</span>['issTcSession']['post'][<span style="color: #800080;">\)url]['url'] = \(url</span><span style="color: #000000;">; </span><span style="color: #800080;">\)_SESSION['issTcSession']['post'][\(url</span>]['data'] = <span style="color: #800080;">\)data;
\(_SESSION</span>['issTcSession']['post'][<span style="color: #800080;">\)url]['header'] = \(header</span><span style="color: #000000;">; </span><span style="color: #800080;">\)curl = curl_init(); // 启动一个CURL会话
curl_setopt(\(curl</span>, CURLOPT_URL, <span style="color: #800080;">\)url); // 要访问的地址
curl_setopt(\(curl</span>, CURLOPT_HTTPHEADER, <span style="color: #800080;">\)header);
curl_setopt(\(curl</span>, CURLOPT_SSL_VERIFYPEER, 0); <span style="color: #008000;">//</span><span style="color: #008000;"> 对认证证书来源的检查</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt(\(curl</span>, CURLOPT_USERAGENT, <span style="color: #800080;">\)_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt(\(curl</span>, CURLOPT_FOLLOWLOCATION, 1); <span style="color: #008000;">//</span><span style="color: #008000;"> 使用自动跳转</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt(\(curl</span>, CURLOPT_POST, 1); <span style="color: #008000;">//</span><span style="color: #008000;"> 发送一个常规的Post请求</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_POSTFIELDS, \(data</span>); <span style="color: #008000;">//</span><span style="color: #008000;"> Post提交的数据包</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_TIMEOUT,60); //只需要设置一个秒的数量就可以
curl_setopt(\(curl</span>, CURLOPT_CONNECTTIMEOUT,0<span style="color: #000000;">); curl_setopt(</span><span style="color: #800080;">\)curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回\(starttime</span>=<span style="color: #008080;">microtime</span>(<span style="color: #0000ff;">true</span><span style="color: #000000;">); </span><span style="color: #800080;">\)tmpInfo = curl_exec(\(curl</span>); <span style="color: #008000;">//</span><span style="color: #008000;"> 执行操作 // if (curl_errno(\)curl)) {
// echo 'Errno'.curl_error(\(curl); // }</span> <span style="color: #800080;">\)endtime=microtime(true);
\(data</span>="---------接口请求总时间:".(<span style="color: #800080;">\)endtime-\(starttime</span>)."-----------------------\n本次接口地址为:<span style="color: #800080;">\)url\n\n\n\n";
\(_SESSION</span>['logdata'.<span style="color: #800080;">\)_GET['a']]=\(data</span><span style="color: #000000;">; curl_close(</span><span style="color: #800080;">\)curl); // 关键CURL会话
return $tmpInfo; // 返回数据
}/
json数据返回格式化
@param $data 数据
@param string $status 状态
@param string $errorCode 错误代码
@param string $message 消息
@param null \(total 数据条数 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> jsonReturn(<span style="color: #800080;">\)data,\(status</span>='1',<span style="color: #800080;">\)errorCode='1',\(message</span>='',<span style="color: #800080;">\)total=null)
{if(\(data</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)json['status'] = 1;
\(json</span>['errorCode'] = <span style="color: #800080;">\)errorCode;
\(json</span>['errorMsg'] = '请求成功'<span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)total)
{
\(json</span>['total'] = <span style="color: #800080;">\)total;
}
else
{
\(json</span>['total'] = <span style="color: #008080;">count</span>(<span style="color: #800080;">\)data);
}
\(json</span>['data'] = <span style="color: #800080;">\)data;
}
else
{
if(\(status</span> != '1'<span style="color: #000000;">) { </span><span style="color: #800080;">\)json['status'] = \(status</span><span style="color: #000000;">; </span><span style="color: #800080;">\)json['errorCode'] = \(errorCode</span><span style="color: #000000;">; </span><span style="color: #800080;">\)json['errorMsg'] =empty(\(message</span>)? '请求失败':<span style="color: #800080;">\)message;
}
else
{
\(json</span>['status'] = '0'<span style="color: #000000;">; </span><span style="color: #800080;">\)json['errorCode'] = '0';
\(json</span>['errorMsg'] =<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)message)? '请求失败':\(message</span><span style="color: #000000;">; } </span><span style="color: #800080;">\)json['total'] = '0';
\(json</span>['data'] = <span style="color: #0000ff;">array</span><span style="color: #000000;">(); } </span><span style="color: #008080;">header</span>("Content-type: application/json"<span style="color: #000000;">); </span><span style="color: #0000ff;">echo</span> json_encode(<span style="color: #800080;">\)json);}
/
- 保留小数
- @param $number 数字
- @param int $num 几位小数
- @return float|int
*/
public static function decimal(\(number</span>,<span style="color: #800080;">\)num=1){
\(number</span> = <span style="color: #008080;">round</span>(<span style="color: #800080;">\)number,\(num</span><span style="color: #000000;">); </span><span style="color: #800080;">\)number1 = intval(\(number</span><span style="color: #000000;">); </span><span style="color: #800080;">\)number2 = \(number</span> > <span style="color: #800080;">\)number1 ? \(number</span> : <span style="color: #800080;">\)number1;
return $number2;}
/
数组排序
@param $arr 数组
@param $keys key名
@param string $type 排序类型 asc,desc
@param int $is0
@param int $isK
@return array
*/
public static function arraySort(\(arr</span>, <span style="color: #800080;">\)keys, \(type</span> = 'asc',<span style="color: #800080;">\)is0=0,\(isK</span>=0<span style="color: #000000;">) { </span><span style="color: #800080;">\)keysvalue = \(new_array</span> = <span style="color: #0000ff;">array</span><span style="color: #000000;">(); </span><span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">\)arr as \(k</span> => <span style="color: #800080;">\)v){
\(keysvalue</span>[<span style="color: #800080;">\)k] = \(v</span>[<span style="color: #800080;">\)keys];
}
\(type</span> == 'asc' ? <span style="color: #008080;">asort</span>(<span style="color: #800080;">\)keysvalue) : arsort(\(keysvalue</span><span style="color: #000000;">); </span><span style="color: #008080;">reset</span>(<span style="color: #800080;">\)keysvalue);
foreach (\(keysvalue</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)k => $v) {</span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$isK</span> == 1<span style="color: #000000;">) { </span><span style="color: #800080;">$new_array</span>[<span style="color: #800080;">$k</span>] = <span style="color: #800080;">$arr</span>[<span style="color: #800080;">$k</span><span style="color: #000000;">]; } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #800080;">$new_array</span>[] = <span style="color: #800080;">$arr</span>[<span style="color: #800080;">$k</span><span style="color: #000000;">]; }
}
if(\(is0</span> == 1<span style="color: #000000;">) { </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)new_array as \(vo_is0</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)vo_is0[\(keys</span>] > 0<span style="color: #000000;">){ </span><span style="color: #800080;">\)new_array_s[] = \(vo_is0</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)new_array_s;
}
return $new_array;
}/
- 判断是否 为空 给 后端数据转成null
- @param $data
- @param int $isStr 0表示不转字符串,1:表示传成字符串
- @return mixed
*/
public static function arrIsNull(\(data</span>,<span style="color: #800080;">\)isStr=0)
{
foreach(\(data</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)k=>&\(vo</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)vo) && (\(k</span> != 'startRow') && (<span style="color: #800080;">\)k != 'endRow') && (\(k</span> != 'education'<span style="color: #000000;">)) { </span><span style="color: #800080;">\)vo = null;
}else{
if(\(isStr</span><span style="color: #000000;">){ </span><span style="color: #800080;">\)vo .= "";
}
}
}
return $data;
}/
- 着色
- @param $colorarr
- @param $data
- @return mixed
*/
public static function color2data(\(colorarr</span>,<span style="color: #800080;">\)data){
\(count</span> = <span style="color: #008080;">count</span>(<span style="color: #800080;">\)colorarr);
\(count_data</span> = <span style="color: #008080;">count</span>(<span style="color: #800080;">\)data);
\(d</span> = <span style="color: #008080;">intval</span>(<span style="color: #800080;">\)count_data/\(count</span><span style="color: #000000;">); </span><span style="color: #800080;">\)d = \(d</span> <= 1 ? 1 : <span style="color: #800080;">\)d;
\(c</span> = 0<span style="color: #000000;">; </span><span style="color: #800080;">\)n = 1;
foreach(\(data</span> <span style="color: #0000ff;">as</span> &<span style="color: #800080;">\)vo)
{
\(temp</span>['style'] = 'esriSFSSolid'<span style="color: #000000;">; </span><span style="color: #800080;">\)temp['color'] = \(colorarr</span>[<span style="color: #800080;">\)c];
\(outline</span>['color'] = <span style="color: #0000ff;">array</span>(106, 212, 238,255<span style="color: #000000;">); </span><span style="color: #800080;">\)outline['width'] = 1;
\(temp</span>['outline'] = <span style="color: #800080;">\)outline;
\(vo</span>['coverStyle'] =<span style="color: #800080;">\)temp;
if(\(n</span> == <span style="color: #800080;">\)d)
{
if(\(c</span> < <span style="color: #800080;">\)count-1)
{
\(c</span>++<span style="color: #000000;">; } </span><span style="color: #800080;">\)n = 1;
}
else
{
\(n</span>++<span style="color: #000000;">; } } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)data;
}/
- 截取字符串
- @param $str
- @param $start
- @param $lenth
- @return string
*/
public static function subStr(\(str</span>, <span style="color: #800080;">\)start, \(lenth</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)str1 = mb_substr(\(str</span>,<span style="color: #800080;">\)start,\(lenth</span>,'UTF8'<span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)str==\(str1</span> ? <span style="color: #800080;">\)str : $str1.'...';
}/
截取字符串
@param $str
@return int
*/
public static function str2num(\(str</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)num1 = (int)\(str</span><span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)num1 == $str)
{</span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$num1</span><span style="color: #000000;">;
}
else
{
return $str;
}}
/
- 字符串转数组转字符串
- @param $data
- @return mixed
*/
public static function str2arr2str(\(data</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)data as &\(vo</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)vo as &\(vo1</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_array</span>(<span style="color: #800080;">\)vo1))
{
\(vo1</span> = json_encode(<span style="color: #800080;">\)vo1);
// \(vo1 = implode(',',\)vo1);
}
}
}
return $data;
}public static function letter(\(value</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)letter = '';
do {
\(letter</span> = <span style="color: #008080;">chr</span>(65 + (<span style="color: #800080;">\)value % 26)) . \(letter</span><span style="color: #000000;">; </span><span style="color: #800080;">\)temp = intval(\(value</span> / 26<span style="color: #000000;">); </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">\)temp > 0) {
\(value</span> = <span style="color: #800080;">\)value - 26;
}
\(value</span> = <span style="color: #008080;">intval</span>(<span style="color: #800080;">\)value / 26);
} while (\(temp</span> != 0<span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)letter;
}/
调试函数
@param unknown $str 要叠加字符的变量名
@param unknown $addstr 要添加的字符
@param string $ifdel 是否将之前的变量清空
@return string
*/
public static function halt(\(logFile</span>,<span style="color: #800080;">\)str,\(ifdel</span>=<span style="color: #0000ff;">false</span><span style="color: #000000;">) { </span><span style="color: #008080;">header</span>("Content-type: text/html; charset=utf-8"<span style="color: #000000;">); </span><span style="color: #800080;">\)logname =LOG_PATH. \(logFile</span> . '-' . <span style="color: #008080;">date</span>("Ymdhis") . '.html'<span style="color: #000000;">; </span><span style="color: #800080;">\)tmpstr = date("Y-m-d h:i:sa") . ' ';if (\(ifdel</span><span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;">清除日志文件内容</span> @<span style="color: #008080;">file_put_contents</span>(<span style="color: #800080;">\)logname, "");
}
if (!empty(\(str</span><span style="color: #000000;">)) { </span><span style="color: #800080;">\)tmpstr .= '--' . \(str</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> { </span><span style="color: #008000;">//</span><span style="color: #008000;">将日导写入日导文件</span> self::writeFile(<span style="color: #800080;">\)logname, \(tmpstr</span> . "\r\n", 'a+'<span style="color: #000000;">); } </span><span style="color: #0000ff;">catch</span> (<span style="color: #0000ff;">Exception</span> <span style="color: #800080;">\)e) {
echo '写入日志出现错误!,错误内容为:' . \(e</span>-><span style="color: #000000;">getMessage(); </span><span style="color: #008000;">//</span><span style="color: #008000;">\)this->writeFile(\(logname,\)str.'Error:'.$e);
}
}/
- 写文件
- @param string $file 文件路径
- @param string $str 写入内容
- @param char \(mode 写入模式 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> writeFile(<span style="color: #800080;">\)file,\(str</span>,<span style="color: #800080;">\)mode='w')
{
\(oldmask</span> = @<span style="color: #008080;">umask</span>(0<span style="color: #000000;">); </span><span style="color: #800080;">\)fp = @fopen(\(file</span>,<span style="color: #800080;">\)mode);
@flock(\(fp</span>, 3<span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(!<span style="color: #800080;">\)fp)
{
Return false;
}
else
{
@fwrite(\(fp</span>,<span style="color: #800080;">\)str);
@fclose(\(fp</span><span style="color: #000000;">); @</span><span style="color: #008080;">umask</span>(<span style="color: #800080;">\)oldmask);
Return true;
}
}/
- gbk 转 utf8
- @param $str
- @return string
*/
public static function utf8_to_gbk(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> mb_convert_encoding(<span style="color: #800080;">\)str,'GBK','UTF-8');
}/
- utf8 转 gbk
- @param $str
- @return string
*/
public static function gbk_to_utf8(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> mb_convert_encoding(<span style="color: #800080;">\)str, 'UTF-8', 'GBK');
}/
- utf8 转 gbk
- @param $str
- @return string
*/
public static function utf8_to_gb18030(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> mb_convert_encoding(<span style="color: #800080;">\)str, 'GB18030','UTF-8');
}
public static function gb18030_to_utf8(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> mb_convert_encoding(<span style="color: #800080;">\)str,'UTF-8', 'GB18030');
}public static function path_info(\(filepath</span>,<span style="color: #800080;">\)ds='/')
{
\(path_parts</span> = <span style="color: #0000ff;">array</span><span style="color: #000000;">(); </span><span style="color: #800080;">\)path_parts ['dirname'] = rtrim(substr(\(filepath</span>, 0, <span style="color: #008080;">strrpos</span>(<span style="color: #800080;">\)filepath,\(ds</span>)),<span style="color: #800080;">\)ds).\(ds</span><span style="color: #000000;">; </span><span style="color: #800080;">\)path_parts ['basename'] = ltrim(substr(\(filepath</span>, <span style="color: #008080;">strrpos</span>(<span style="color: #800080;">\)filepath, \(ds</span>)),<span style="color: #800080;">\)ds);
\(path_parts</span> ['extension'] = <span style="color: #008080;">substr</span>(<span style="color: #008080;">strrchr</span>(<span style="color: #800080;">\)filepath, '.'), 1);
\(path_parts</span> ['filename'] = <span style="color: #008080;">ltrim</span>(<span style="color: #008080;">substr</span>(<span style="color: #800080;">\)path_parts ['basename'], 0, strrpos(\(path_parts</span> ['basename'], '.')),<span style="color: #800080;">\)ds);
return $path_parts;
}/
- 字符转码
- @param $str 字符
- @param string $Code 目标编码 "ASCII","UTF-8","GB2312","GBK","BIG5"
- @return mixed|string
*/
public static function convertCode(\(str</span>,<span style="color: #800080;">\)Code="GB2312"){
\(fromCode</span> = mb_detect_encoding(<span style="color: #800080;">\)str, array("ASCII","UTF-8","GB2312","GBK","BIG5"));
// return mb_convert_encoding(\(str,\)Code,\(encode);</span> <span style="color: #0000ff;">return</span> <span style="color: #008080;">iconv</span>(<span style="color: #800080;">\)fromCode,\(Code</span>."//IGNORE",<span style="color: #800080;">\)str);
}
public static function array_iconv(\(arr</span>,<span style="color: #800080;">\)out_charset="GB2312"){
\(fromCode</span> = mb_detect_encoding(<span style="color: #008080;">serialize</span>(<span style="color: #800080;">\)arr), array("ASCII","UTF-8","GB2312","GBK","BIG5"));
return eval('return '.\mb_convert_encoding(var_export(\(arr</span>,<span style="color: #0000ff;">true</span>).';',<span style="color: #800080;">\)out_charset,$fromCode));
}/
- 是否为windows操作系统,
- @return bool true:windows,false:其它操作系统
/
public static function isWinOS(){
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') return true;
else return false;
}
/*- 获取当前操作系统
- @return string
*/
public static function getOS(){
\(os</span>=''<span style="color: #000000;">; </span><span style="color: #800080;">\)Agent=\(_SERVER</span>['HTTP_USER_AGENT'<span style="color: #000000;">]; </span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&strpos(\(Agent</span>, '95'<span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows 95';
}elseif(eregi('win 9x',\(Agent</span>)&&<span style="color: #008080;">strpos</span>(<span style="color: #800080;">\)Agent, '4.90')){
\(os</span>='Windows ME'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&ereg('98',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows 98';
}elseif(eregi('win',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('nt 5.0',<span style="color: #800080;">\)Agent)){
\(os</span>='Windows 2000'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&eregi('nt 6.0',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows Vista';
}elseif(eregi('win',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('nt 6.1',<span style="color: #800080;">\)Agent)){
\(os</span>='Windows 7'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&eregi('nt 5.1',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows XP';
}elseif(eregi('win',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('nt',<span style="color: #800080;">\)Agent)){
\(os</span>='Windows NT'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&ereg('32',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows 32';
}elseif(eregi('linux',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Linux';
}elseif(eregi('unix',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Unix';
}else if(eregi('sun',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('os',<span style="color: #800080;">\)Agent)){
\(os</span>='SunOS'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('ibm',<span style="color: #800080;">\)Agent)&&eregi('os',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='IBM OS/2';
}elseif(eregi('Mac',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('PC',<span style="color: #800080;">\)Agent)){
\(os</span>='Macintosh'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('PowerPC',<span style="color: #800080;">\)Agent)){
\(os</span>='PowerPC'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('AIX',<span style="color: #800080;">\)Agent)){
\(os</span>='AIX'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('HPUX',<span style="color: #800080;">\)Agent)){
\(os</span>='HPUX'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('NetBSD',<span style="color: #800080;">\)Agent)){
\(os</span>='NetBSD'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('BSD',<span style="color: #800080;">\)Agent)){
\(os</span>='BSD'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">ereg</span>('OSF1',<span style="color: #800080;">\)Agent)){
\(os</span>='OSF1'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">ereg</span>('IRIX',<span style="color: #800080;">\)Agent)){
\(os</span>='IRIX'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('FreeBSD',<span style="color: #800080;">\)Agent)){
\(os</span>='FreeBSD'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #800080;">\)os==''){
\(os</span>='Unknown'<span style="color: #000000;">; } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)os;
}/
- 定时任务日志处理函数
- @param $TaskData 任务数据
- @param $status 状态值,取值为: 0:待执行 1:执行中 2:已执行 3:待删除 4:已删除 5:异常'
- @param $info 备注信息
- @return mixed
*/
public static function TaskLog(\(TaskData</span>,<span style="color: #800080;">\)status,\(info</span><span style="color: #000000;">){ </span><span style="color: #800080;">\)data=array(
'timer_id'=>\(TaskData</span>['timer_id'], 'timer_event'=><span style="color: #800080;">\)TaskData['timer_event'],
'status'=>\(status</span>, 'from_type'=><span style="color: #800080;">\)TaskData['from_type'],
'from_id'=>\(TaskData</span>['from_id'], 'addtime'=><span style="color: #008080;">time</span>(), 'remark'=><span style="color: #800080;">\)info,
);
return Db::table(Tool::getPrefix('system').'timer_log')->insert($data);
}public function checkmobile(\(mobilephone</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)mobilephone = trim(\(mobilephone</span><span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">preg_match</span>("/^13[0-9]{1}[0-9]{8}\)|15[01236789]{1}[0-9]{8}\(|18[01236789]{1}[0-9]{8}\)/",\(mobilephone</span><span style="color: #000000;">)){ </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)mobilephone;
} else {
return false;
}
}/
- Data转xml数据
- @param $data array
- @return mixed string
*/
public static function data2xmlfunc(\(data</span><span style="color: #000000;">){ </span><span style="color: #800080;">\)xml = new \SimpleXMLElement('<xml></xml>');
self::data2xml(\(xml</span>, <span style="color: #800080;">\)data);
return \(xml</span>-><span style="color: #000000;">asXML(); } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> data2xml(<span style="color: #800080;">\)xml, \(data</span>, <span style="color: #800080;">\)item = 'item'){
foreach (\(data</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)key => \(value</span><span style="color: #000000;">) { </span><span style="color: #008080;">is_numeric</span>(<span style="color: #800080;">\)key) && (\(key</span> = <span style="color: #800080;">\)item);
if (is_array(\(value</span>) || <span style="color: #008080;">is_object</span>(<span style="color: #800080;">\)value)) {
\(child</span> = <span style="color: #800080;">\)xml->addChild(\(key</span><span style="color: #000000;">); self</span>::data2xml(<span style="color: #800080;">\)child, \(value</span>, <span style="color: #800080;">\)item);
} else {
if (is_numeric(\(value</span><span style="color: #000000;">)) { </span><span style="color: #800080;">\)child = \(xml</span>->addChild(<span style="color: #800080;">\)key, \(value</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #800080;">\)child = \(xml</span>->addChild(<span style="color: #800080;">\)key);
\(node</span> = <span style="color: #008080;">dom_import_simplexml</span>(<span style="color: #800080;">\)child);
\(node</span>->appendChild(<span style="color: #800080;">\)node->ownerDocument->createCDATASection($value));
}
}
}
}/
- 将xml字符串转xml数组
- @param \(xmlString </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> getXmlArray(<span style="color: #800080;">\)xmlString){
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
\(values</span> = json_decode(json_encode(<span style="color: #008080;">simplexml_load_string</span>(<span style="color: #800080;">\)xmlString, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $values;
}/
- 出现科学计数法,还原成字符串
- @param $num
- @return float|string
*/
public static function NumToStr(\(num</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">stripos</span>(<span style="color: #800080;">\)num, 'e') === false)
return \(num</span><span style="color: #000000;">; </span><span style="color: #800080;">\)num = trim(preg_replace('/[='"]/', '', \(num</span>, 1), '"'); <span style="color: #008000;">//</span><span style="color: #008000;">出现科学计数法,还原成字符串</span> <span style="color: #800080;">\)result = "";
while (\(num</span> > 0<span style="color: #000000;">) { </span><span style="color: #800080;">\)v = \(num</span> - <span style="color: #008080;">floor</span>(<span style="color: #800080;">\)num / 10) * 10;
\(num</span> = <span style="color: #008080;">floor</span>(<span style="color: #800080;">\)num / 10);
\(result</span> = <span style="color: #800080;">\)v . \(result</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)result;
}/
unset 空数据
@param string $data
@return array
*/
public static function unset_null_arr(\(data</span>=''<span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)data as \(k</span>=><span style="color: #800080;">\)vo)
{
foreach(\(vo</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)k2=>\(vo2</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)vo2){
\(arr</span>[<span style="color: #800080;">\)k2] = \(vo2</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #800080;">\)arr[$k2] = null;
}
}</span><span style="color: #800080;">$arr2</span>[] = <span style="color: #800080;">$arr</span><span style="color: #000000;">;
}
return $arr2;
}/
- 获取excel日期
- @param string $date
- @return mixed|string
*/
public static function get_excel_date(\(date</span>=''<span style="color: #000000;">){ </span><span style="color: #800080;">\)date = str_replace("年","/",\(date</span><span style="color: #000000;">); </span><span style="color: #800080;">\)date = str_replace("月","/",\(date</span><span style="color: #000000;">); </span><span style="color: #800080;">\)date = str_replace("日","",\(date</span><span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)date;
}public static function debug(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> Debug::dump(<span style="color: #800080;">\)str);
}/
返回经htmlspecialchars处理过的字符串或数组
@param $obj 需要处理的字符串或数组
@return mixed
/
public static function strip_html_special_chars(\(string</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)encoding = 'utf-8';
if(strtolower(CHARSET)=='gbk') \(encoding</span> = 'ISO-8859-15'<span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(!<span style="color: #008080;">is_array</span>(<span style="color: #800080;">\)string)) return htmlspecialchars(\(string</span>,ENT_QUOTES,<span style="color: #800080;">\)encoding);
foreach(\(string</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)key => \(val</span>) <span style="color: #800080;">\)string[\(key</span>] = new_html_special_chars(<span style="color: #800080;">\)val);
return $string;
}
/*将字符串转换为数组
@param string $data 字符串
@return array 返回数组格式,如果,data为空,则返回空数组
/
public static function string2array(\(data</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)data = trim(\(data</span><span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)data == '') return array();
if(strpos(\(data</span>, 'array')===0<span style="color: #000000;">){ @</span><span style="color: #0000ff;">eval</span>("\$array = <span style="color: #800080;">\)data;");
}else{
if(strpos(\(data</span>, '{\\')===0) <span style="color: #800080;">\)data = stripslashes(\(data</span><span style="color: #000000;">); </span><span style="color: #800080;">\)array=json_decode($data,true);
// if(strtolower(CHARSET)=='gbk'){
// $array = mult_iconv("UTF-8", "GBK//IGNORE", \(array); // }</span> <span style="color: #000000;"> } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)array;
}
/*将数组转换为字符串
@param array $data 数组
@param bool $isformdata 如果为0,则不使用new_stripslashes处理,可选参数,默认为1
@return string 返回字符串,如果,data为空,则返回空
*/
public static function array2string(\(data</span>, <span style="color: #800080;">\)isformdata = 1) {
if(\(data</span> == '' || <span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)data)) return '';if(\(isformdata</span>) <span style="color: #800080;">\)data = new_stripslashes(\(data</span><span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">strtolower</span>(CHARSET)=='gbk'<span style="color: #000000;">){ </span><span style="color: #800080;">\)data = mult_iconv("GBK", "UTF-8", \(data</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">version_compare</span>(<span style="color: #ff00ff;">PHP_VERSION</span>,'5.3.0','<'<span style="color: #000000;">)){ </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">addslashes</span>(json_encode(<span style="color: #800080;">\)data));
}else{
return addslashes(json_encode($data,JSON_FORCE_OBJECT));
}
}/
获取客户端IP地址
@param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
@param boolean $adv 是否进行高级模式获取(有可能被伪装)
@return mixed
*/
public static function get_client_ip(\(type</span> = 0,<span style="color: #800080;">\)adv=false) {
\(type</span> = <span style="color: #800080;">\)type ? 1 : 0;
static \(ip</span> = <span style="color: #0000ff;">NULL</span><span style="color: #000000;">; </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">\)ip !== NULL) return \(ip</span>[<span style="color: #800080;">\)type];
if(\(adv</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)_SERVER['HTTP_X_FORWARDED_FOR'])) {
\(arr</span> = <span style="color: #008080;">explode</span>(',', <span style="color: #800080;">\)_SERVER['HTTP_X_FORWARDED_FOR']);
\(pos</span> = <span style="color: #008080;">array_search</span>('unknown',<span style="color: #800080;">\)arr);
if(false !== \(pos</span>) <span style="color: #0000ff;">unset</span>(<span style="color: #800080;">\)arr[\(pos</span><span style="color: #000000;">]); </span><span style="color: #800080;">\)ip = trim(\(arr</span>[0<span style="color: #000000;">]); }</span><span style="color: #0000ff;">elseif</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)_SERVER['HTTP_CLIENT_IP'])) {
\(ip</span> = <span style="color: #800080;">\)_SERVER['HTTP_CLIENT_IP'];
}elseif (isset(\(_SERVER</span>['REMOTE_ADDR'<span style="color: #000000;">])) { </span><span style="color: #800080;">\)ip = \(_SERVER</span>['REMOTE_ADDR'<span style="color: #000000;">]; } }</span><span style="color: #0000ff;">elseif</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)_SERVER['REMOTE_ADDR'])) {
\(ip</span> = <span style="color: #800080;">\)_SERVER['REMOTE_ADDR'];
}
// IP地址合法验证
\(long</span> = <span style="color: #008080;">sprintf</span>("%u",<span style="color: #008080;">ip2long</span>(<span style="color: #800080;">\)ip));
\(ip</span> = <span style="color: #800080;">\)long ? array(\(ip</span>, <span style="color: #800080;">\)long) : array('0.0.0.0', 0);
return \(ip</span>[<span style="color: #800080;">\)type];
}/
- 二维数组去处重复项
- @param $arr 传入数组
- @param $key 判断的key值
- @return array
*/
public static function array_unset(\(arr</span>,<span style="color: #800080;">\)key){ //$arr-> \(key-> //建立一个目标数组</span> <span style="color: #800080;">\)res = array();
foreach (\(arr</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)value) {
//查看有没有重复项
if(isset(\(res</span>[<span style="color: #800080;">\)value[\(key</span><span style="color: #000000;">]])){ </span><span style="color: #008000;">//</span><span style="color: #008000;">有:销毁</span> <span style="color: #0000ff;">unset</span>(<span style="color: #800080;">\)value[\(key</span><span style="color: #000000;">]); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #800080;">\)res[\(value</span>[<span style="color: #800080;">\)key]] = \(value</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)res;
}/
- 调用自定义类方法
- @param unknown $name
- @param unknown $model 分组名称
- @return Ambigous <unknown>
*/
public static function MM(\(name</span>,<span style="color: #800080;">\)model=''){
static \(_api_model</span> = <span style="color: #0000ff;">array</span><span style="color: #000000;">(); </span><span style="color: #800080;">\)modelStr = empty(\(model</span>)?MODULE_NAME:<span style="color: #800080;">\)model;
\(classname</span> = '\\app\\'.<span style="color: #800080;">\)modelStr.'\Model\'.\(name</span><span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(!<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)_api_model[\(name</span>])) <span style="color: #800080;">\)_api_model[\(name</span>] = <span style="color: #0000ff;">new</span> <span style="color: #800080;">\)classname();
return \(_api_model</span>[<span style="color: #800080;">\)name];}
public static function get_grogress(\(start</span>,<span style="color: #800080;">\)end){
</span><span style="color: #800080;">$start</span> = <span style="color: #008080;">str_replace</span>(",","",<span style="color: #800080;">$start</span><span style="color: #000000;">); </span><span style="color: #800080;">$end</span> = <span style="color: #008080;">str_replace</span>(",","",<span style="color: #800080;">$end</span><span style="color: #000000;">); </span><span style="color: #800080;">$r</span> = <span style="color: #008080;">intval</span>( <span style="color: #800080;">$start</span>/(<span style="color: #800080;">$start</span>+<span style="color: #800080;">$end</span>)*100<span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$r</span><span style="color: #000000;">;
}
/
- 生成编码
- @param $id 主键
- @param $type 类型 ,取值:实验:experiment,实验系列:experimentCategory,实验模板:experimentImage
- @return string
*/
public static function generateCode(\(id</span>,<span style="color: #800080;">\)type){
\(date</span>=<span style="color: #008080;">date</span>('Ymd'<span style="color: #000000;">); </span><span style="color: #800080;">\)prefix='';
switch(\(type</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">case</span> 'experiment': <span style="color: #800080;">\)prefix='SY';
break;
case 'experimentCategory':
\(prefix</span>='SYXL'<span style="color: #000000;">; </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; </span><span style="color: #0000ff;">case</span> 'experimentImage': <span style="color: #800080;">\)prefix='RQMB';
break;
case 'ClassManagement':
\(prefix</span>='C'<span style="color: #000000;">; </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; } </span><span style="color: #800080;">\)returnStr=\(prefix</span>.<span style="color: #800080;">\)date.\(id</span><span style="color: #000000;">; </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)returnStr;
}public static function formatFilePath(\(file</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">str_replace</span>("\\","/",<span style="color: #800080;">\)file);
}/
获取时间间隔
@param $startTime 开始时间
@param $endTime 结束时间
@return String
/
public static function getDurationTime(\(startTime</span>,<span style="color: #800080;">\)endTime){
if(empty(\(startTime</span><span style="color: #000000;">)){ </span><span style="color: #0000ff;">return</span> ""<span style="color: #000000;">; }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #800080;">\)endTime=empty(\(endTime</span>)?<span style="color: #008080;">time</span>():<span style="color: #008080;">strtotime</span>(<span style="color: #800080;">\)endTime);
\(durationTime</span>=<span style="color: #800080;">\)endTime-strtotime(\(startTime</span><span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> self::time2Units(<span style="color: #800080;">\)durationTime);
}
}
/*时间差计算
@param Timestamp $time
@return String Time Elapsed
@author Shelley Shyan
@copyright http://phparch.cn (Professional PHP Architecture)
*/
public static function time2Units(\(time</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)year = floor(\(time</span> / 60 / 60 / 24 / 365<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(year</span> * 60 * 60 * 24 * 365<span style="color: #000000;">; </span><span style="color: #800080;">\)month = floor(\(time</span> / 60 / 60 / 24 / 30<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(month</span> * 60 * 60 * 24 * 30<span style="color: #000000;">; </span><span style="color: #800080;">\)week = floor(\(time</span> / 60 / 60 / 24 / 7<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(week</span> * 60 * 60 * 24 * 7<span style="color: #000000;">; </span><span style="color: #800080;">\)day = floor(\(time</span> / 60 / 60 / 24<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(day</span> * 60 * 60 * 24<span style="color: #000000;">; </span><span style="color: #800080;">\)hour = floor(\(time</span> / 60 / 60<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(hour</span> * 60 * 60<span style="color: #000000;">; </span><span style="color: #800080;">\)minute = floor(\(time</span> / 60<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(minute</span> * 60<span style="color: #000000;">; </span><span style="color: #800080;">\)second = \(time</span><span style="color: #000000;">; </span><span style="color: #800080;">\)elapse = '';$unitArr = array('年' => 'year', '个月' => 'month', '周' => 'week', '天' => 'day',
'小时' => 'hour', '分钟' => 'minute', '秒' => 'second'
);foreach (\(unitArr</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)cn => \(u</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span> (\)\(u</span> > 0<span style="color: #000000;">) { </span><span style="color: #800080;">\)elapse = \(<span style="color: #800080;">\)u . $cn;
break;
}
}return \(elapse</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> getRandCode(<span style="color: #800080;">\)codeNum=4){
\(str</span> = "0123456789"<span style="color: #000000;">; </span><span style="color: #800080;">\)code='';
for (\(i</span> = 0; <span style="color: #800080;">\)i < \(codeNum</span>; <span style="color: #800080;">\)i++) {
\(code</span> .= <span style="color: #800080;">\)str{rand(0, strlen(\(str</span>) - 1<span style="color: #000000;">)}; } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)code;
}}
<?php namespace isslib\Util; use think\Config; use think\Db; use think\Debug;/
常用工具类
User: xaxiong
Date: 2016/12/19
Time: 13:47
*/
class Tool{/
- 简单加密处理函数
- @param $data
- @return string
*/
public static function encodeData(\(data</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">urlencode</span>(json_encode(<span style="color: #800080;">\)data));
}/
- 简单解密处理函数
- @param $data
- @return mixed
*/
public static function decodeData(\(data</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> json_decode(<span style="color: #008080;">urldecode</span>(<span style="color: #800080;">\)data),true);
}/
- 获取数据表前缀
- @param string $mprefix 取值为:'origial':原始表;'dest':业务表;'system':系统表,标准知识库模型;'common':公共表
- @param bool $isprefix true 需要前缀,false不需要前缀
- @return mixed|string
*/
public static function getPrefix(\(mprefix</span>='',<span style="color: #800080;">\)isprefix=true){
if(\(isprefix</span><span style="color: #000000;">) </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)mprefix)?Config::get('database.prefix'):Config::get('database.prefix').Config::get('database.mprefix')[\(mprefix</span><span style="color: #000000;">]; </span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)mprefix)?'':Config::get('database.mprefix')[$mprefix];
}/
- 对excel里的日期进行格式转化
- @param $val 数据
- @param $format 格式
- @return string
*/
public static function GetExceDate(\(val</span>,<span style="color: #800080;">\)format){
if(!empty(\(val</span><span style="color: #000000;">)) { </span><span style="color: #800080;">\)jd = <span style="color: #008080;">GregorianToJD(1, 1, 1970);
\(date</span> = \<span style="color: #008080;">JDToGregorian</span>(<span style="color: #800080;">\)jd + intval(\(val</span>) - 25569<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;"> list(\)month, $day, \(year) = explode('/',\)date);
if (!empty(\(format</span>)) <span style="color: #800080;">\)date = date(\(format</span>, <span style="color: #008080;">strtotime</span>(<span style="color: #800080;">\)date));
return $date;
}else{
return null;
}
}/
格式化数字
@param $number 要格式化的数值
@param $type 类型 normal,electric
@param \(type 单位后缀 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> numberFormat(<span style="color: #800080;">\)number,\(type</span>='normal',<span style="color: #800080;">\)extUnit='')
{
/
- @var array 数据格式化类型
*/
$FORMAT_TYPE=array(
'normal'=>array(
array(
'base'=>100000000,
'unit'=>'亿'
),
array(
'base'=>10000,
'unit'=>'万'
),
array(
'base'=>1000,
'unit'=>'千'
),
array(
'base'=>1,
'unit'=>''
)
),
'electric'=>array(
array(
'base'=>1000000000000,
'unit'=>'TW'
),
array(
'base'=>1000000000,
'unit'=>'GW'
),
array(
'base'=>1000000,
'unit'=>'MW'
),
array(
'base'=>1000,
'unit'=>'KW'
),
array(
'base'=>1,
'unit'=>'W'
)
)
);\(FORMAT_TYPE_ITEM</span>=<span style="color: #800080;">\)FORMAT_TYPE[\(type</span><span style="color: #000000;">]; </span><span style="color: #008000;">//</span><span style="color: #008000;">\)keys=array_keys(\(FORMAT_TYPE_ITEM); //var_dump(\)FORMAT_TYPE_ITEM[\(keys[0]]);exit();</span> <span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)number)){
\(arr</span>['value']= 0<span style="color: #000000;">; </span><span style="color: #800080;">\)arr['unit']='';
\(arr</span>['base']=1<span style="color: #000000;">; </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)arr;
}
return self::getMaxUnit(\(number</span>,<span style="color: #800080;">\)FORMAT_TYPE_ITEM,$extUnit);}
/
获取最大单位数据
@param $number 数字
@param $AllArr 数据类型配置
@param string $extUnit 单位
@param array $currArr 当前数据
@return array
*/
public static function getMaxUnit(\(number</span>,<span style="color: #800080;">\)AllArr,\(extUnit</span>='',<span style="color: #800080;">\)currArr=array()){
//if(\(index>count(\)desArr)) return \(returnArr;</span> <span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)currArr)){
\(currArr</span>=<span style="color: #800080;">\)AllArr[0];
}
\(key</span>=<span style="color: #800080;">\)currArr['base'];
\(value</span>=<span style="color: #800080;">\)currArr['unit'];\(leaveNum</span>=<span style="color: #800080;">\)number/\(key</span><span style="color: #000000;">; </span><span style="color: #800080;">\)resdata=array();
//arrayStep::getInstance(\(AllArr)->setCurrent(\)key);
if(\(leaveNum</span> > 0 && <span style="color: #800080;">\)leaveNum < 1){
//\(nextArr=arrayStep::getInstance(\)AllArr)->getNext();
\(nextArr</span>=<span style="color: #008080;">next</span>(<span style="color: #800080;">\)AllArr);//var_dump(\(nextArr);</span> <span style="color: #800080;">\)data=self::getMaxUnit(\(number</span>,<span style="color: #800080;">\)AllArr,\(extUnit</span>,<span style="color: #800080;">\)nextArr);
if(!empty(\(data</span>))<span style="color: #0000ff;">return</span> <span style="color: #800080;">\)data;
}else{
\(resdata</span>= <span style="color: #0000ff;">array</span><span style="color: #000000;">( </span>'value'=><span style="color: #008080;">number_format</span>(<span style="color: #008080;">round</span>(<span style="color: #800080;">\)leaveNum)),
'unit'=>\(value</span>.<span style="color: #800080;">\)extUnit,
'base'=>\(key</span><span style="color: #000000;"> ); </span><span style="color: #008000;">//</span><span style="color: #008000;">var_dump(\)resdata);
return $resdata;
exit();
}
}/
- 无限级分类,直接获取节点树
- @param unknown $list 数据集合
- @param string $pk 主键字段
- @param string $pid 父节点id对应字段
- @param string $child 子节点id对应字段
- @param number $root 从第几级开始查询
- @return multitype:unknown
/
public static function list_to_tree(\(list</span>, <span style="color: #800080;">\)pk='id',\(pid</span> = 'pid',<span style="color: #800080;">\)child = 'child',\(root</span>=0<span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 创建Tree</span> <span style="color: #800080;">\)tree = array();
if(is_array(\(list</span><span style="color: #000000;">)) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 创建基于主键的数组引用</span> <span style="color: #800080;">\)refer = array();
foreach (\(list</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)key => \(data</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)refer[\(data</span>[<span style="color: #800080;">\)pk]] =& \(list</span>[<span style="color: #800080;">\)key];
}
foreach (\(list</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)key => \(data</span><span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 判断是否存在parent</span> <span style="color: #800080;">\)parentId = \(data</span>[<span style="color: #800080;">\)pid];
if (\(root</span> == <span style="color: #800080;">\)parentId) {
\(tree</span>[] =& <span style="color: #800080;">\)list[\(key</span><span style="color: #000000;">]; }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)refer[\(parentId</span><span style="color: #000000;">])) { </span><span style="color: #800080;">\)parent =& \(refer</span>[<span style="color: #800080;">\)parentId];
\(parent</span>[<span style="color: #800080;">\)child][] =& \(list</span>[<span style="color: #800080;">\)key];
}
}
}
}
return $tree;
}
//无限极分类返回列表行记录
/*- @param unknown $cate_info_sort 返回的数据
- @param unknown $data 原始数据
- @param string $pk 表主键
- @param string $pid_name 表父字段id
- @param number $pid 开始的父字段id
- @param string \(kk 分割线 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> cate_sort(&<span style="color: #800080;">\)cate_info_sort,\(data</span>,<span style="color: #800080;">\)pk='id',\(pid_name</span>="pid",<span style="color: #800080;">\)pid=0,\(kk</span>="|"<span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)data as \(k</span>=> <span style="color: #800080;">\)v){
if(\(v</span>[<span style="color: #800080;">\)pid_name]==\(pid</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">\)v as \(ke</span>=><span style="color: #800080;">\)vl){
\(cate_info_sort</span>[<span style="color: #800080;">\)k][\(ke</span>] = <span style="color: #800080;">\)vl;
}
\(cate_info_sort</span>[<span style="color: #800080;">\)k]["kk"] = \(kk</span><span style="color: #000000;">; </span><span style="color: #800080;">\)pos = strpos(\(kk</span>, "--"<span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)pos === false){
\(cate_info_sort</span>[<span style="color: #800080;">\)k]["sun"] = 0;
}else{
\(cate_info_sort</span>[<span style="color: #800080;">\)k]["sun"] = 1;
}
self::cate_sort(\(cate_info_sort</span>,<span style="color: #800080;">\)data ,\(pk</span>,<span style="color: #800080;">\)pid_name,\(v</span>[<span style="color: #800080;">\)pk]," ".$kk."--");
}
}
}/
GET调用接口获取返回值
@param $url url地址
@param array $header 请求头配置
@return mixed
*/
public static function curlGET(\(url</span>,<span style="color: #800080;">\)header=array()){\(_SESSION</span>['issTcSession']['get'][<span style="color: #800080;">\)url]['url'] = \(url</span><span style="color: #000000;">; </span><span style="color: #800080;">\)_SESSION['issTcSession']['get'][\(url</span>]['header'] = <span style="color: #800080;">\)header;
// echo \(url;</span> <span style="color: #800080;">\)ch = curl_init();
curl_setopt(\(ch</span>, CURLOPT_URL, <span style="color: #800080;">\)url);
curl_setopt(\(ch</span>, CURLOPT_HTTPHEADER, <span style="color: #800080;">\)header);
curl_setopt(\(ch</span>, CURLOPT_RETURNTRANSFER, 1<span style="color: #000000;">); curl_setopt(</span><span style="color: #800080;">\)ch, CURLOPT_HEADER, 0);
curl_setopt(\(ch</span>, CURLOPT_TIMEOUT,60); <span style="color: #008000;">//</span><span style="color: #008000;">只需要设置一个秒的数量就可以</span> curl_setopt(<span style="color: #800080;">\)ch, CURLOPT_CONNECTTIMEOUT,0);
\(starttime</span>=<span style="color: #008080;">microtime</span>(<span style="color: #0000ff;">true</span><span style="color: #000000;">); </span><span style="color: #800080;">\)temp = curl_exec(\(ch</span><span style="color: #000000;">); </span><span style="color: #800080;">\)endtime=microtime(true);
\(data</span>="---------接口请求总时间:".(<span style="color: #800080;">\)endtime-\(starttime</span>)."-----------------------\n本次接口地址为:<span style="color: #800080;">\)url\n\n\n\n";
\(_SESSION</span>['logdata'.<span style="color: #800080;">\)_GET['a']]=\(data</span><span style="color: #000000;">; curl_close(</span><span style="color: #800080;">\)ch);
return $temp;
}/
POST调用接口获取返回值
@param $url url地址
@param string $data 参数
@param array $header 请求头
@return mixed
*/
public static function curlPOST(\(url</span>,<span style="color: #800080;">\)data='',$header=array()){\(_SESSION</span>['issTcSession']['post'][<span style="color: #800080;">\)url]['url'] = \(url</span><span style="color: #000000;">; </span><span style="color: #800080;">\)_SESSION['issTcSession']['post'][\(url</span>]['data'] = <span style="color: #800080;">\)data;
\(_SESSION</span>['issTcSession']['post'][<span style="color: #800080;">\)url]['header'] = \(header</span><span style="color: #000000;">; </span><span style="color: #800080;">\)curl = curl_init(); // 启动一个CURL会话
curl_setopt(\(curl</span>, CURLOPT_URL, <span style="color: #800080;">\)url); // 要访问的地址
curl_setopt(\(curl</span>, CURLOPT_HTTPHEADER, <span style="color: #800080;">\)header);
curl_setopt(\(curl</span>, CURLOPT_SSL_VERIFYPEER, 0); <span style="color: #008000;">//</span><span style="color: #008000;"> 对认证证书来源的检查</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
curl_setopt(\(curl</span>, CURLOPT_USERAGENT, <span style="color: #800080;">\)_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt(\(curl</span>, CURLOPT_FOLLOWLOCATION, 1); <span style="color: #008000;">//</span><span style="color: #008000;"> 使用自动跳转</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt(\(curl</span>, CURLOPT_POST, 1); <span style="color: #008000;">//</span><span style="color: #008000;"> 发送一个常规的Post请求</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_POSTFIELDS, \(data</span>); <span style="color: #008000;">//</span><span style="color: #008000;"> Post提交的数据包</span> curl_setopt(<span style="color: #800080;">\)curl, CURLOPT_TIMEOUT,60); //只需要设置一个秒的数量就可以
curl_setopt(\(curl</span>, CURLOPT_CONNECTTIMEOUT,0<span style="color: #000000;">); curl_setopt(</span><span style="color: #800080;">\)curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回\(starttime</span>=<span style="color: #008080;">microtime</span>(<span style="color: #0000ff;">true</span><span style="color: #000000;">); </span><span style="color: #800080;">\)tmpInfo = curl_exec(\(curl</span>); <span style="color: #008000;">//</span><span style="color: #008000;"> 执行操作 // if (curl_errno(\)curl)) {
// echo 'Errno'.curl_error(\(curl); // }</span> <span style="color: #800080;">\)endtime=microtime(true);
\(data</span>="---------接口请求总时间:".(<span style="color: #800080;">\)endtime-\(starttime</span>)."-----------------------\n本次接口地址为:<span style="color: #800080;">\)url\n\n\n\n";
\(_SESSION</span>['logdata'.<span style="color: #800080;">\)_GET['a']]=\(data</span><span style="color: #000000;">; curl_close(</span><span style="color: #800080;">\)curl); // 关键CURL会话
return $tmpInfo; // 返回数据
}/
json数据返回格式化
@param $data 数据
@param string $status 状态
@param string $errorCode 错误代码
@param string $message 消息
@param null \(total 数据条数 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> jsonReturn(<span style="color: #800080;">\)data,\(status</span>='1',<span style="color: #800080;">\)errorCode='1',\(message</span>='',<span style="color: #800080;">\)total=null)
{if(\(data</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)json['status'] = 1;
\(json</span>['errorCode'] = <span style="color: #800080;">\)errorCode;
\(json</span>['errorMsg'] = '请求成功'<span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)total)
{
\(json</span>['total'] = <span style="color: #800080;">\)total;
}
else
{
\(json</span>['total'] = <span style="color: #008080;">count</span>(<span style="color: #800080;">\)data);
}
\(json</span>['data'] = <span style="color: #800080;">\)data;
}
else
{
if(\(status</span> != '1'<span style="color: #000000;">) { </span><span style="color: #800080;">\)json['status'] = \(status</span><span style="color: #000000;">; </span><span style="color: #800080;">\)json['errorCode'] = \(errorCode</span><span style="color: #000000;">; </span><span style="color: #800080;">\)json['errorMsg'] =empty(\(message</span>)? '请求失败':<span style="color: #800080;">\)message;
}
else
{
\(json</span>['status'] = '0'<span style="color: #000000;">; </span><span style="color: #800080;">\)json['errorCode'] = '0';
\(json</span>['errorMsg'] =<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)message)? '请求失败':\(message</span><span style="color: #000000;">; } </span><span style="color: #800080;">\)json['total'] = '0';
\(json</span>['data'] = <span style="color: #0000ff;">array</span><span style="color: #000000;">(); } </span><span style="color: #008080;">header</span>("Content-type: application/json"<span style="color: #000000;">); </span><span style="color: #0000ff;">echo</span> json_encode(<span style="color: #800080;">\)json);}
/
- 保留小数
- @param $number 数字
- @param int $num 几位小数
- @return float|int
*/
public static function decimal(\(number</span>,<span style="color: #800080;">\)num=1){
\(number</span> = <span style="color: #008080;">round</span>(<span style="color: #800080;">\)number,\(num</span><span style="color: #000000;">); </span><span style="color: #800080;">\)number1 = intval(\(number</span><span style="color: #000000;">); </span><span style="color: #800080;">\)number2 = \(number</span> > <span style="color: #800080;">\)number1 ? \(number</span> : <span style="color: #800080;">\)number1;
return $number2;}
/
数组排序
@param $arr 数组
@param $keys key名
@param string $type 排序类型 asc,desc
@param int $is0
@param int $isK
@return array
*/
public static function arraySort(\(arr</span>, <span style="color: #800080;">\)keys, \(type</span> = 'asc',<span style="color: #800080;">\)is0=0,\(isK</span>=0<span style="color: #000000;">) { </span><span style="color: #800080;">\)keysvalue = \(new_array</span> = <span style="color: #0000ff;">array</span><span style="color: #000000;">(); </span><span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">\)arr as \(k</span> => <span style="color: #800080;">\)v){
\(keysvalue</span>[<span style="color: #800080;">\)k] = \(v</span>[<span style="color: #800080;">\)keys];
}
\(type</span> == 'asc' ? <span style="color: #008080;">asort</span>(<span style="color: #800080;">\)keysvalue) : arsort(\(keysvalue</span><span style="color: #000000;">); </span><span style="color: #008080;">reset</span>(<span style="color: #800080;">\)keysvalue);
foreach (\(keysvalue</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)k => $v) {</span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$isK</span> == 1<span style="color: #000000;">) { </span><span style="color: #800080;">$new_array</span>[<span style="color: #800080;">$k</span>] = <span style="color: #800080;">$arr</span>[<span style="color: #800080;">$k</span><span style="color: #000000;">]; } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #800080;">$new_array</span>[] = <span style="color: #800080;">$arr</span>[<span style="color: #800080;">$k</span><span style="color: #000000;">]; }
}
if(\(is0</span> == 1<span style="color: #000000;">) { </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)new_array as \(vo_is0</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)vo_is0[\(keys</span>] > 0<span style="color: #000000;">){ </span><span style="color: #800080;">\)new_array_s[] = \(vo_is0</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)new_array_s;
}
return $new_array;
}/
- 判断是否 为空 给 后端数据转成null
- @param $data
- @param int $isStr 0表示不转字符串,1:表示传成字符串
- @return mixed
*/
public static function arrIsNull(\(data</span>,<span style="color: #800080;">\)isStr=0)
{
foreach(\(data</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)k=>&\(vo</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)vo) && (\(k</span> != 'startRow') && (<span style="color: #800080;">\)k != 'endRow') && (\(k</span> != 'education'<span style="color: #000000;">)) { </span><span style="color: #800080;">\)vo = null;
}else{
if(\(isStr</span><span style="color: #000000;">){ </span><span style="color: #800080;">\)vo .= "";
}
}
}
return $data;
}/
- 着色
- @param $colorarr
- @param $data
- @return mixed
*/
public static function color2data(\(colorarr</span>,<span style="color: #800080;">\)data){
\(count</span> = <span style="color: #008080;">count</span>(<span style="color: #800080;">\)colorarr);
\(count_data</span> = <span style="color: #008080;">count</span>(<span style="color: #800080;">\)data);
\(d</span> = <span style="color: #008080;">intval</span>(<span style="color: #800080;">\)count_data/\(count</span><span style="color: #000000;">); </span><span style="color: #800080;">\)d = \(d</span> <= 1 ? 1 : <span style="color: #800080;">\)d;
\(c</span> = 0<span style="color: #000000;">; </span><span style="color: #800080;">\)n = 1;
foreach(\(data</span> <span style="color: #0000ff;">as</span> &<span style="color: #800080;">\)vo)
{
\(temp</span>['style'] = 'esriSFSSolid'<span style="color: #000000;">; </span><span style="color: #800080;">\)temp['color'] = \(colorarr</span>[<span style="color: #800080;">\)c];
\(outline</span>['color'] = <span style="color: #0000ff;">array</span>(106, 212, 238,255<span style="color: #000000;">); </span><span style="color: #800080;">\)outline['width'] = 1;
\(temp</span>['outline'] = <span style="color: #800080;">\)outline;
\(vo</span>['coverStyle'] =<span style="color: #800080;">\)temp;
if(\(n</span> == <span style="color: #800080;">\)d)
{
if(\(c</span> < <span style="color: #800080;">\)count-1)
{
\(c</span>++<span style="color: #000000;">; } </span><span style="color: #800080;">\)n = 1;
}
else
{
\(n</span>++<span style="color: #000000;">; } } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)data;
}/
- 截取字符串
- @param $str
- @param $start
- @param $lenth
- @return string
*/
public static function subStr(\(str</span>, <span style="color: #800080;">\)start, \(lenth</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)str1 = mb_substr(\(str</span>,<span style="color: #800080;">\)start,\(lenth</span>,'UTF8'<span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)str==\(str1</span> ? <span style="color: #800080;">\)str : $str1.'...';
}/
截取字符串
@param $str
@return int
*/
public static function str2num(\(str</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)num1 = (int)\(str</span><span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)num1 == $str)
{</span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$num1</span><span style="color: #000000;">;
}
else
{
return $str;
}}
/
- 字符串转数组转字符串
- @param $data
- @return mixed
*/
public static function str2arr2str(\(data</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)data as &\(vo</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)vo as &\(vo1</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">is_array</span>(<span style="color: #800080;">\)vo1))
{
\(vo1</span> = json_encode(<span style="color: #800080;">\)vo1);
// \(vo1 = implode(',',\)vo1);
}
}
}
return $data;
}public static function letter(\(value</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)letter = '';
do {
\(letter</span> = <span style="color: #008080;">chr</span>(65 + (<span style="color: #800080;">\)value % 26)) . \(letter</span><span style="color: #000000;">; </span><span style="color: #800080;">\)temp = intval(\(value</span> / 26<span style="color: #000000;">); </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">\)temp > 0) {
\(value</span> = <span style="color: #800080;">\)value - 26;
}
\(value</span> = <span style="color: #008080;">intval</span>(<span style="color: #800080;">\)value / 26);
} while (\(temp</span> != 0<span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)letter;
}/
调试函数
@param unknown $str 要叠加字符的变量名
@param unknown $addstr 要添加的字符
@param string $ifdel 是否将之前的变量清空
@return string
*/
public static function halt(\(logFile</span>,<span style="color: #800080;">\)str,\(ifdel</span>=<span style="color: #0000ff;">false</span><span style="color: #000000;">) { </span><span style="color: #008080;">header</span>("Content-type: text/html; charset=utf-8"<span style="color: #000000;">); </span><span style="color: #800080;">\)logname =LOG_PATH. \(logFile</span> . '-' . <span style="color: #008080;">date</span>("Ymdhis") . '.html'<span style="color: #000000;">; </span><span style="color: #800080;">\)tmpstr = date("Y-m-d h:i:sa") . ' ';if (\(ifdel</span><span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;">清除日志文件内容</span> @<span style="color: #008080;">file_put_contents</span>(<span style="color: #800080;">\)logname, "");
}
if (!empty(\(str</span><span style="color: #000000;">)) { </span><span style="color: #800080;">\)tmpstr .= '--' . \(str</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> { </span><span style="color: #008000;">//</span><span style="color: #008000;">将日导写入日导文件</span> self::writeFile(<span style="color: #800080;">\)logname, \(tmpstr</span> . "\r\n", 'a+'<span style="color: #000000;">); } </span><span style="color: #0000ff;">catch</span> (<span style="color: #0000ff;">Exception</span> <span style="color: #800080;">\)e) {
echo '写入日志出现错误!,错误内容为:' . \(e</span>-><span style="color: #000000;">getMessage(); </span><span style="color: #008000;">//</span><span style="color: #008000;">\)this->writeFile(\(logname,\)str.'Error:'.$e);
}
}/
- 写文件
- @param string $file 文件路径
- @param string $str 写入内容
- @param char \(mode 写入模式 </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> writeFile(<span style="color: #800080;">\)file,\(str</span>,<span style="color: #800080;">\)mode='w')
{
\(oldmask</span> = @<span style="color: #008080;">umask</span>(0<span style="color: #000000;">); </span><span style="color: #800080;">\)fp = @fopen(\(file</span>,<span style="color: #800080;">\)mode);
@flock(\(fp</span>, 3<span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(!<span style="color: #800080;">\)fp)
{
Return false;
}
else
{
@fwrite(\(fp</span>,<span style="color: #800080;">\)str);
@fclose(\(fp</span><span style="color: #000000;">); @</span><span style="color: #008080;">umask</span>(<span style="color: #800080;">\)oldmask);
Return true;
}
}/
- gbk 转 utf8
- @param $str
- @return string
*/
public static function utf8_to_gbk(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> mb_convert_encoding(<span style="color: #800080;">\)str,'GBK','UTF-8');
}/
- utf8 转 gbk
- @param $str
- @return string
*/
public static function gbk_to_utf8(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> mb_convert_encoding(<span style="color: #800080;">\)str, 'UTF-8', 'GBK');
}/
- utf8 转 gbk
- @param $str
- @return string
*/
public static function utf8_to_gb18030(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> mb_convert_encoding(<span style="color: #800080;">\)str, 'GB18030','UTF-8');
}
public static function gb18030_to_utf8(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> mb_convert_encoding(<span style="color: #800080;">\)str,'UTF-8', 'GB18030');
}public static function path_info(\(filepath</span>,<span style="color: #800080;">\)ds='/')
{
\(path_parts</span> = <span style="color: #0000ff;">array</span><span style="color: #000000;">(); </span><span style="color: #800080;">\)path_parts ['dirname'] = rtrim(substr(\(filepath</span>, 0, <span style="color: #008080;">strrpos</span>(<span style="color: #800080;">\)filepath,\(ds</span>)),<span style="color: #800080;">\)ds).\(ds</span><span style="color: #000000;">; </span><span style="color: #800080;">\)path_parts ['basename'] = ltrim(substr(\(filepath</span>, <span style="color: #008080;">strrpos</span>(<span style="color: #800080;">\)filepath, \(ds</span>)),<span style="color: #800080;">\)ds);
\(path_parts</span> ['extension'] = <span style="color: #008080;">substr</span>(<span style="color: #008080;">strrchr</span>(<span style="color: #800080;">\)filepath, '.'), 1);
\(path_parts</span> ['filename'] = <span style="color: #008080;">ltrim</span>(<span style="color: #008080;">substr</span>(<span style="color: #800080;">\)path_parts ['basename'], 0, strrpos(\(path_parts</span> ['basename'], '.')),<span style="color: #800080;">\)ds);
return $path_parts;
}/
- 字符转码
- @param $str 字符
- @param string $Code 目标编码 "ASCII","UTF-8","GB2312","GBK","BIG5"
- @return mixed|string
*/
public static function convertCode(\(str</span>,<span style="color: #800080;">\)Code="GB2312"){
\(fromCode</span> = mb_detect_encoding(<span style="color: #800080;">\)str, array("ASCII","UTF-8","GB2312","GBK","BIG5"));
// return mb_convert_encoding(\(str,\)Code,\(encode);</span> <span style="color: #0000ff;">return</span> <span style="color: #008080;">iconv</span>(<span style="color: #800080;">\)fromCode,\(Code</span>."//IGNORE",<span style="color: #800080;">\)str);
}
public static function array_iconv(\(arr</span>,<span style="color: #800080;">\)out_charset="GB2312"){
\(fromCode</span> = mb_detect_encoding(<span style="color: #008080;">serialize</span>(<span style="color: #800080;">\)arr), array("ASCII","UTF-8","GB2312","GBK","BIG5"));
return eval('return '.\mb_convert_encoding(var_export(\(arr</span>,<span style="color: #0000ff;">true</span>).';',<span style="color: #800080;">\)out_charset,$fromCode));
}/
- 是否为windows操作系统,
- @return bool true:windows,false:其它操作系统
/
public static function isWinOS(){
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') return true;
else return false;
}
/*- 获取当前操作系统
- @return string
*/
public static function getOS(){
\(os</span>=''<span style="color: #000000;">; </span><span style="color: #800080;">\)Agent=\(_SERVER</span>['HTTP_USER_AGENT'<span style="color: #000000;">]; </span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&strpos(\(Agent</span>, '95'<span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows 95';
}elseif(eregi('win 9x',\(Agent</span>)&&<span style="color: #008080;">strpos</span>(<span style="color: #800080;">\)Agent, '4.90')){
\(os</span>='Windows ME'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&ereg('98',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows 98';
}elseif(eregi('win',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('nt 5.0',<span style="color: #800080;">\)Agent)){
\(os</span>='Windows 2000'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&eregi('nt 6.0',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows Vista';
}elseif(eregi('win',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('nt 6.1',<span style="color: #800080;">\)Agent)){
\(os</span>='Windows 7'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&eregi('nt 5.1',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows XP';
}elseif(eregi('win',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('nt',<span style="color: #800080;">\)Agent)){
\(os</span>='Windows NT'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('win',<span style="color: #800080;">\)Agent)&&ereg('32',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Windows 32';
}elseif(eregi('linux',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Linux';
}elseif(eregi('unix',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='Unix';
}else if(eregi('sun',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('os',<span style="color: #800080;">\)Agent)){
\(os</span>='SunOS'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('ibm',<span style="color: #800080;">\)Agent)&&eregi('os',\(Agent</span><span style="color: #000000;">)){ </span><span style="color: #800080;">\)os='IBM OS/2';
}elseif(eregi('Mac',\(Agent</span>)&&<span style="color: #008080;">eregi</span>('PC',<span style="color: #800080;">\)Agent)){
\(os</span>='Macintosh'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('PowerPC',<span style="color: #800080;">\)Agent)){
\(os</span>='PowerPC'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('AIX',<span style="color: #800080;">\)Agent)){
\(os</span>='AIX'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('HPUX',<span style="color: #800080;">\)Agent)){
\(os</span>='HPUX'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('NetBSD',<span style="color: #800080;">\)Agent)){
\(os</span>='NetBSD'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('BSD',<span style="color: #800080;">\)Agent)){
\(os</span>='BSD'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">ereg</span>('OSF1',<span style="color: #800080;">\)Agent)){
\(os</span>='OSF1'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">ereg</span>('IRIX',<span style="color: #800080;">\)Agent)){
\(os</span>='IRIX'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #008080;">eregi</span>('FreeBSD',<span style="color: #800080;">\)Agent)){
\(os</span>='FreeBSD'<span style="color: #000000;">; }</span><span style="color: #0000ff;">elseif</span>(<span style="color: #800080;">\)os==''){
\(os</span>='Unknown'<span style="color: #000000;">; } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)os;
}/
- 定时任务日志处理函数
- @param $TaskData 任务数据
- @param $status 状态值,取值为: 0:待执行 1:执行中 2:已执行 3:待删除 4:已删除 5:异常'
- @param $info 备注信息
- @return mixed
*/
public static function TaskLog(\(TaskData</span>,<span style="color: #800080;">\)status,\(info</span><span style="color: #000000;">){ </span><span style="color: #800080;">\)data=array(
'timer_id'=>\(TaskData</span>['timer_id'], 'timer_event'=><span style="color: #800080;">\)TaskData['timer_event'],
'status'=>\(status</span>, 'from_type'=><span style="color: #800080;">\)TaskData['from_type'],
'from_id'=>\(TaskData</span>['from_id'], 'addtime'=><span style="color: #008080;">time</span>(), 'remark'=><span style="color: #800080;">\)info,
);
return Db::table(Tool::getPrefix('system').'timer_log')->insert($data);
}public function checkmobile(\(mobilephone</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)mobilephone = trim(\(mobilephone</span><span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">preg_match</span>("/^13[0-9]{1}[0-9]{8}\)|15[01236789]{1}[0-9]{8}\(|18[01236789]{1}[0-9]{8}\)/",\(mobilephone</span><span style="color: #000000;">)){ </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)mobilephone;
} else {
return false;
}
}/
- Data转xml数据
- @param $data array
- @return mixed string
*/
public static function data2xmlfunc(\(data</span><span style="color: #000000;">){ </span><span style="color: #800080;">\)xml = new \SimpleXMLElement('<xml></xml>');
self::data2xml(\(xml</span>, <span style="color: #800080;">\)data);
return \(xml</span>-><span style="color: #000000;">asXML(); } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> data2xml(<span style="color: #800080;">\)xml, \(data</span>, <span style="color: #800080;">\)item = 'item'){
foreach (\(data</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)key => \(value</span><span style="color: #000000;">) { </span><span style="color: #008080;">is_numeric</span>(<span style="color: #800080;">\)key) && (\(key</span> = <span style="color: #800080;">\)item);
if (is_array(\(value</span>) || <span style="color: #008080;">is_object</span>(<span style="color: #800080;">\)value)) {
\(child</span> = <span style="color: #800080;">\)xml->addChild(\(key</span><span style="color: #000000;">); self</span>::data2xml(<span style="color: #800080;">\)child, \(value</span>, <span style="color: #800080;">\)item);
} else {
if (is_numeric(\(value</span><span style="color: #000000;">)) { </span><span style="color: #800080;">\)child = \(xml</span>->addChild(<span style="color: #800080;">\)key, \(value</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #800080;">\)child = \(xml</span>->addChild(<span style="color: #800080;">\)key);
\(node</span> = <span style="color: #008080;">dom_import_simplexml</span>(<span style="color: #800080;">\)child);
\(node</span>->appendChild(<span style="color: #800080;">\)node->ownerDocument->createCDATASection($value));
}
}
}
}/
- 将xml字符串转xml数组
- @param \(xmlString </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> getXmlArray(<span style="color: #800080;">\)xmlString){
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
\(values</span> = json_decode(json_encode(<span style="color: #008080;">simplexml_load_string</span>(<span style="color: #800080;">\)xmlString, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $values;
}/
- 出现科学计数法,还原成字符串
- @param $num
- @return float|string
*/
public static function NumToStr(\(num</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">stripos</span>(<span style="color: #800080;">\)num, 'e') === false)
return \(num</span><span style="color: #000000;">; </span><span style="color: #800080;">\)num = trim(preg_replace('/[='"]/', '', \(num</span>, 1), '"'); <span style="color: #008000;">//</span><span style="color: #008000;">出现科学计数法,还原成字符串</span> <span style="color: #800080;">\)result = "";
while (\(num</span> > 0<span style="color: #000000;">) { </span><span style="color: #800080;">\)v = \(num</span> - <span style="color: #008080;">floor</span>(<span style="color: #800080;">\)num / 10) * 10;
\(num</span> = <span style="color: #008080;">floor</span>(<span style="color: #800080;">\)num / 10);
\(result</span> = <span style="color: #800080;">\)v . \(result</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)result;
}/
unset 空数据
@param string $data
@return array
*/
public static function unset_null_arr(\(data</span>=''<span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">\)data as \(k</span>=><span style="color: #800080;">\)vo)
{
foreach(\(vo</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)k2=>\(vo2</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)vo2){
\(arr</span>[<span style="color: #800080;">\)k2] = \(vo2</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #800080;">\)arr[$k2] = null;
}
}</span><span style="color: #800080;">$arr2</span>[] = <span style="color: #800080;">$arr</span><span style="color: #000000;">;
}
return $arr2;
}/
- 获取excel日期
- @param string $date
- @return mixed|string
*/
public static function get_excel_date(\(date</span>=''<span style="color: #000000;">){ </span><span style="color: #800080;">\)date = str_replace("年","/",\(date</span><span style="color: #000000;">); </span><span style="color: #800080;">\)date = str_replace("月","/",\(date</span><span style="color: #000000;">); </span><span style="color: #800080;">\)date = str_replace("日","",\(date</span><span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)date;
}public static function debug(\(str</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> Debug::dump(<span style="color: #800080;">\)str);
}/
返回经htmlspecialchars处理过的字符串或数组
@param $obj 需要处理的字符串或数组
@return mixed
/
public static function strip_html_special_chars(\(string</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)encoding = 'utf-8';
if(strtolower(CHARSET)=='gbk') \(encoding</span> = 'ISO-8859-15'<span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(!<span style="color: #008080;">is_array</span>(<span style="color: #800080;">\)string)) return htmlspecialchars(\(string</span>,ENT_QUOTES,<span style="color: #800080;">\)encoding);
foreach(\(string</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)key => \(val</span>) <span style="color: #800080;">\)string[\(key</span>] = new_html_special_chars(<span style="color: #800080;">\)val);
return $string;
}
/*将字符串转换为数组
@param string $data 字符串
@return array 返回数组格式,如果,data为空,则返回空数组
/
public static function string2array(\(data</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)data = trim(\(data</span><span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">\)data == '') return array();
if(strpos(\(data</span>, 'array')===0<span style="color: #000000;">){ @</span><span style="color: #0000ff;">eval</span>("\$array = <span style="color: #800080;">\)data;");
}else{
if(strpos(\(data</span>, '{\\')===0) <span style="color: #800080;">\)data = stripslashes(\(data</span><span style="color: #000000;">); </span><span style="color: #800080;">\)array=json_decode($data,true);
// if(strtolower(CHARSET)=='gbk'){
// $array = mult_iconv("UTF-8", "GBK//IGNORE", \(array); // }</span> <span style="color: #000000;"> } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)array;
}
/*将数组转换为字符串
@param array $data 数组
@param bool $isformdata 如果为0,则不使用new_stripslashes处理,可选参数,默认为1
@return string 返回字符串,如果,data为空,则返回空
*/
public static function array2string(\(data</span>, <span style="color: #800080;">\)isformdata = 1) {
if(\(data</span> == '' || <span style="color: #0000ff;">empty</span>(<span style="color: #800080;">\)data)) return '';if(\(isformdata</span>) <span style="color: #800080;">\)data = new_stripslashes(\(data</span><span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(<span style="color: #008080;">strtolower</span>(CHARSET)=='gbk'<span style="color: #000000;">){ </span><span style="color: #800080;">\)data = mult_iconv("GBK", "UTF-8", \(data</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">version_compare</span>(<span style="color: #ff00ff;">PHP_VERSION</span>,'5.3.0','<'<span style="color: #000000;">)){ </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">addslashes</span>(json_encode(<span style="color: #800080;">\)data));
}else{
return addslashes(json_encode($data,JSON_FORCE_OBJECT));
}
}/
获取客户端IP地址
@param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
@param boolean $adv 是否进行高级模式获取(有可能被伪装)
@return mixed
*/
public static function get_client_ip(\(type</span> = 0,<span style="color: #800080;">\)adv=false) {
\(type</span> = <span style="color: #800080;">\)type ? 1 : 0;
static \(ip</span> = <span style="color: #0000ff;">NULL</span><span style="color: #000000;">; </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">\)ip !== NULL) return \(ip</span>[<span style="color: #800080;">\)type];
if(\(adv</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)_SERVER['HTTP_X_FORWARDED_FOR'])) {
\(arr</span> = <span style="color: #008080;">explode</span>(',', <span style="color: #800080;">\)_SERVER['HTTP_X_FORWARDED_FOR']);
\(pos</span> = <span style="color: #008080;">array_search</span>('unknown',<span style="color: #800080;">\)arr);
if(false !== \(pos</span>) <span style="color: #0000ff;">unset</span>(<span style="color: #800080;">\)arr[\(pos</span><span style="color: #000000;">]); </span><span style="color: #800080;">\)ip = trim(\(arr</span>[0<span style="color: #000000;">]); }</span><span style="color: #0000ff;">elseif</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)_SERVER['HTTP_CLIENT_IP'])) {
\(ip</span> = <span style="color: #800080;">\)_SERVER['HTTP_CLIENT_IP'];
}elseif (isset(\(_SERVER</span>['REMOTE_ADDR'<span style="color: #000000;">])) { </span><span style="color: #800080;">\)ip = \(_SERVER</span>['REMOTE_ADDR'<span style="color: #000000;">]; } }</span><span style="color: #0000ff;">elseif</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)_SERVER['REMOTE_ADDR'])) {
\(ip</span> = <span style="color: #800080;">\)_SERVER['REMOTE_ADDR'];
}
// IP地址合法验证
\(long</span> = <span style="color: #008080;">sprintf</span>("%u",<span style="color: #008080;">ip2long</span>(<span style="color: #800080;">\)ip));
\(ip</span> = <span style="color: #800080;">\)long ? array(\(ip</span>, <span style="color: #800080;">\)long) : array('0.0.0.0', 0);
return \(ip</span>[<span style="color: #800080;">\)type];
}/
- 二维数组去处重复项
- @param $arr 传入数组
- @param $key 判断的key值
- @return array
*/
public static function array_unset(\(arr</span>,<span style="color: #800080;">\)key){ //$arr-> \(key-> //建立一个目标数组</span> <span style="color: #800080;">\)res = array();
foreach (\(arr</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)value) {
//查看有没有重复项
if(isset(\(res</span>[<span style="color: #800080;">\)value[\(key</span><span style="color: #000000;">]])){ </span><span style="color: #008000;">//</span><span style="color: #008000;">有:销毁</span> <span style="color: #0000ff;">unset</span>(<span style="color: #800080;">\)value[\(key</span><span style="color: #000000;">]); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #800080;">\)res[\(value</span>[<span style="color: #800080;">\)key]] = \(value</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)res;
}/
- 调用自定义类方法
- @param unknown $name
- @param unknown $model 分组名称
- @return Ambigous <unknown>
*/
public static function MM(\(name</span>,<span style="color: #800080;">\)model=''){
static \(_api_model</span> = <span style="color: #0000ff;">array</span><span style="color: #000000;">(); </span><span style="color: #800080;">\)modelStr = empty(\(model</span>)?MODULE_NAME:<span style="color: #800080;">\)model;
\(classname</span> = '\\app\\'.<span style="color: #800080;">\)modelStr.'\Model\'.\(name</span><span style="color: #000000;">; </span><span style="color: #0000ff;">if</span>(!<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">\)_api_model[\(name</span>])) <span style="color: #800080;">\)_api_model[\(name</span>] = <span style="color: #0000ff;">new</span> <span style="color: #800080;">\)classname();
return \(_api_model</span>[<span style="color: #800080;">\)name];}
public static function get_grogress(\(start</span>,<span style="color: #800080;">\)end){
</span><span style="color: #800080;">$start</span> = <span style="color: #008080;">str_replace</span>(",","",<span style="color: #800080;">$start</span><span style="color: #000000;">); </span><span style="color: #800080;">$end</span> = <span style="color: #008080;">str_replace</span>(",","",<span style="color: #800080;">$end</span><span style="color: #000000;">); </span><span style="color: #800080;">$r</span> = <span style="color: #008080;">intval</span>( <span style="color: #800080;">$start</span>/(<span style="color: #800080;">$start</span>+<span style="color: #800080;">$end</span>)*100<span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$r</span><span style="color: #000000;">;
}
/
- 生成编码
- @param $id 主键
- @param $type 类型 ,取值:实验:experiment,实验系列:experimentCategory,实验模板:experimentImage
- @return string
*/
public static function generateCode(\(id</span>,<span style="color: #800080;">\)type){
\(date</span>=<span style="color: #008080;">date</span>('Ymd'<span style="color: #000000;">); </span><span style="color: #800080;">\)prefix='';
switch(\(type</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">case</span> 'experiment': <span style="color: #800080;">\)prefix='SY';
break;
case 'experimentCategory':
\(prefix</span>='SYXL'<span style="color: #000000;">; </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; </span><span style="color: #0000ff;">case</span> 'experimentImage': <span style="color: #800080;">\)prefix='RQMB';
break;
case 'ClassManagement':
\(prefix</span>='C'<span style="color: #000000;">; </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; } </span><span style="color: #800080;">\)returnStr=\(prefix</span>.<span style="color: #800080;">\)date.\(id</span><span style="color: #000000;">; </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)returnStr;
}public static function formatFilePath(\(file</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">str_replace</span>("\\","/",<span style="color: #800080;">\)file);
}/
获取时间间隔
@param $startTime 开始时间
@param $endTime 结束时间
@return String
/
public static function getDurationTime(\(startTime</span>,<span style="color: #800080;">\)endTime){
if(empty(\(startTime</span><span style="color: #000000;">)){ </span><span style="color: #0000ff;">return</span> ""<span style="color: #000000;">; }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #800080;">\)endTime=empty(\(endTime</span>)?<span style="color: #008080;">time</span>():<span style="color: #008080;">strtotime</span>(<span style="color: #800080;">\)endTime);
\(durationTime</span>=<span style="color: #800080;">\)endTime-strtotime(\(startTime</span><span style="color: #000000;">); </span><span style="color: #0000ff;">return</span> self::time2Units(<span style="color: #800080;">\)durationTime);
}
}
/*时间差计算
@param Timestamp $time
@return String Time Elapsed
@author Shelley Shyan
@copyright http://phparch.cn (Professional PHP Architecture)
*/
public static function time2Units(\(time</span><span style="color: #000000;">) { </span><span style="color: #800080;">\)year = floor(\(time</span> / 60 / 60 / 24 / 365<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(year</span> * 60 * 60 * 24 * 365<span style="color: #000000;">; </span><span style="color: #800080;">\)month = floor(\(time</span> / 60 / 60 / 24 / 30<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(month</span> * 60 * 60 * 24 * 30<span style="color: #000000;">; </span><span style="color: #800080;">\)week = floor(\(time</span> / 60 / 60 / 24 / 7<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(week</span> * 60 * 60 * 24 * 7<span style="color: #000000;">; </span><span style="color: #800080;">\)day = floor(\(time</span> / 60 / 60 / 24<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(day</span> * 60 * 60 * 24<span style="color: #000000;">; </span><span style="color: #800080;">\)hour = floor(\(time</span> / 60 / 60<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(hour</span> * 60 * 60<span style="color: #000000;">; </span><span style="color: #800080;">\)minute = floor(\(time</span> / 60<span style="color: #000000;">); </span><span style="color: #800080;">\)time -= \(minute</span> * 60<span style="color: #000000;">; </span><span style="color: #800080;">\)second = \(time</span><span style="color: #000000;">; </span><span style="color: #800080;">\)elapse = '';$unitArr = array('年' => 'year', '个月' => 'month', '周' => 'week', '天' => 'day',
'小时' => 'hour', '分钟' => 'minute', '秒' => 'second'
);foreach (\(unitArr</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">\)cn => \(u</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span> (\)\(u</span> > 0<span style="color: #000000;">) { </span><span style="color: #800080;">\)elapse = \(<span style="color: #800080;">\)u . $cn;
break;
}
}return \(elapse</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> getRandCode(<span style="color: #800080;">\)codeNum=4){
\(str</span> = "0123456789"<span style="color: #000000;">; </span><span style="color: #800080;">\)code='';
for (\(i</span> = 0; <span style="color: #800080;">\)i < \(codeNum</span>; <span style="color: #800080;">\)i++) {
\(code</span> .= <span style="color: #800080;">\)str{rand(0, strlen(\(str</span>) - 1<span style="color: #000000;">)}; } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">\)code;
}}