<?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&gt;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)-&gt;setCurrent(\)key);
      if(\(leaveNum</span> &gt; 0 &amp;&amp; <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'=&gt;<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>[] =&amp; <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> &gt; <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> =&gt; <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>] &gt; 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') &amp;&amp; (<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> &lt;= 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> &amp;<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> &lt; <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>-&gt;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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> =&gt; &amp;<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> =&gt; <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> =&gt; <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> &lt; <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],"&nbsp;&nbsp;&nbsp;&nbsp;".$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','&lt;'<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&gt;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)-&gt;setCurrent(\)key);
      if(\(leaveNum</span> &gt; 0 &amp;&amp; <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'=&gt;<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>[] =&amp; <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(&amp;<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>=&gt; <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>=&gt;<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],"&nbsp;&nbsp;&nbsp;&nbsp;".$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> &gt; <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> =&gt; <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>] &gt; 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') &amp;&amp; (<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> &lt;= 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> &amp;<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> &lt; <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>-&gt;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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'=&gt;<span style="color: #800080;">\)TaskData['timer_event'],
      'status'=>\(status</span>, 'from_type'=&gt;<span style="color: #800080;">\)TaskData['from_type'],
      'from_id'=>\(TaskData</span>['from_id'], 'addtime'=&gt;<span style="color: #008080;">time</span>(), 'remark'=&gt;<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>-&gt;<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>-&gt;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>-&gt;addChild(<span style="color: #800080;">\)key);
      \(node</span> = <span style="color: #008080;">dom_import_simplexml</span>(<span style="color: #800080;">\)child);
      \(node</span>-&gt;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> &gt; 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>=&gt;<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','&lt;'<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-&gt; //建立一个目标数组</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> &gt; 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&gt;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)-&gt;setCurrent(\)key);
      if(\(leaveNum</span> &gt; 0 &amp;&amp; <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'=&gt;<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>[] =&amp; <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(&amp;<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>=&gt; <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>=&gt;<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],"&nbsp;&nbsp;&nbsp;&nbsp;".$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> &gt; <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> =&gt; <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>] &gt; 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') &amp;&amp; (<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> &lt;= 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> &amp;<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> &lt; <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>-&gt;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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>)&amp;&amp;<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'=&gt;<span style="color: #800080;">\)TaskData['timer_event'],
      'status'=>\(status</span>, 'from_type'=&gt;<span style="color: #800080;">\)TaskData['from_type'],
      'from_id'=>\(TaskData</span>['from_id'], 'addtime'=&gt;<span style="color: #008080;">time</span>(), 'remark'=&gt;<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>-&gt;<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>-&gt;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>-&gt;addChild(<span style="color: #800080;">\)key);
      \(node</span> = <span style="color: #008080;">dom_import_simplexml</span>(<span style="color: #800080;">\)child);
      \(node</span>-&gt;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> &gt; 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>=&gt;<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','&lt;'<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-&gt; //建立一个目标数组</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> &gt; 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;
      }

}