util.js 10.7 KB

function isString(str) {
  return (typeof str == 'string') && str.constructor == String;
}
function isArray(obj) {
  return (typeof obj == 'object') && obj.constructor == Array;
}

function sub_last(str){
  return str.substring(0, str.length - 1)
}
function trim(str) { return str.replace(/(^s*)|(s*$)/g, "");}
function e(e) {
    var r = ""; for (var t in e) r += (r ? "&" : "") + t + "=" + e[t]; return r;
}

function utf16to8(str) {
  var out, i, len, c; out = ""; len = str.length;
  for (i = 0; i < len; i++) {
    c = str.charCodeAt(i);
    if ((c >= 0x0001) && (c <= 0x007F)) {
      out += str.charAt(i);
    } else if (c > 0x07FF) {
      out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
      out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
      out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
    } else {
      out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
      out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
    }
  }
  return out;
}

function utf8to16(str) {
  var out, i, len, c; var char2, char3;
  out = "";len = str.length; i = 0;
  while (i < len) {
    c = str.charCodeAt(i++);
    switch (c >> 4) {
      case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
        // 0xxxxxxx
        out += str.charAt(i - 1);
        break;
      case 12: case 13:
        // 110x xxxx   10xx xxxx
        char2 = str.charCodeAt(i++);
        out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
        break;
      case 14:
        // 1110 xxxx  10xx xxxx  10xx xxxx
        char2 = str.charCodeAt(i++);
        char3 = str.charCodeAt(i++);
        out += String.fromCharCode(((c & 0x0F) << 12) |
          ((char2 & 0x3F) << 6) |
          ((char3 & 0x3F) << 0));
        break;
    }
  }
  return out;
}


function unserialize_o(ss) {
  var p = 0, ht = [], hv = 1,r = null;
  function unser_null() { p++; return null; }
  function unser_boolean() { p++; var b = (ss.charAt(p++) == '1');  p++; return b; }
  function unser_integer() {  p++;
    var i = parseInt(ss.substring(p, p = ss.indexOf(';', p))); p++; return i;}
  function unser_double() {
    p++;var d = ss.substring(p, p = ss.indexOf(';', p));
    switch (d) {
      case 'INF': d = Number.POSITIVE_INFINITY; break;
      case '-INF': d = Number.NEGATIVE_INFINITY; break;
      default: d = parseFloat(d);
    }
    p++; return d;
  }
  function unser_string() {
    p++;var l = parseInt(ss.substring(p, p = ss.indexOf(':', p)));
    p += 2;  var s = utf8to16(ss.substring(p, p += l));
    p += 2; return s;
  }
  function unser_array() {
    p++; var n = parseInt(ss.substring(p, p = ss.indexOf(':', p)));
    p += 2; var a = []; ht[hv++] = a;
    for (var i = 0; i < n; i++) {
      var k;
      switch (ss.charAt(p++)) {
        case 'i': k = unser_integer(); break;
        case 's': k = unser_string(); break;
        case 'U': k = unser_unicode_string(); break;
        default: return false;
      }
      a[k] = __unserialize();
    }
    p++; return a;
  }
  function unser_object() {
    p++;
    var l = parseInt(ss.substring(p, p = ss.indexOf(':', p)));
    p += 2;
    var cn = utf8to16(ss.substring(p, p += l));
    p += 2;
    var n = parseInt(ss.substring(p, p = ss.indexOf(':', p)));
    p += 2;
    if (eval(['typeof(', cn, ') == "undefined"'].join(''))) {
      eval(['function ', cn, '(){}'].join(''));
    }
    var o = eval(['new ', cn, '()'].join(''));
    ht[hv++] = o;
    for (var i = 0; i < n; i++) {
      var k;
      switch (ss.charAt(p++)) {
        case 's': k = unser_string(); break;
        case 'U': k = unser_unicode_string(); break;
        default: return false;
      }
      if (k.charAt(0) == '\0') {
        k = k.substring(k.indexOf('\0', 1) + 1, k.length);
      }
      o[k] = __unserialize();
    }
    p++;
    if (typeof (o.__wakeup) == 'function') o.__wakeup();
    return o;
  }
  function unser_custom_object() {
    p++;
    var l = parseInt(ss.substring(p, p = ss.indexOf(':', p)));
    p += 2;
    var cn = utf8to16(ss.substring(p, p += l));
    p += 2;
    var n = parseInt(ss.substring(p, p = ss.indexOf(':', p)));
    p += 2;
    if (eval(['typeof(', cn, ') == "undefined"'].join(''))) {
      eval(['function ', cn, '(){}'].join(''));
    }
    var o = eval(['new ', cn, '()'].join(''));
    ht[hv++] = o;
    if (typeof (o.unserialize) != 'function') p += n;
    else o.unserialize(ss.substring(p, p += n));
    p++;
    return o;
  }

  function unser_unicode_string() {
    p++; var l = parseInt(ss.substring(p, p = ss.indexOf(':', p)));
    p += 2; var sb = [];
    for (i = 0; i < l; i++) {
      if ((sb[i] = ss.charAt(p++)) == '\\') {
        sb[i] = String.fromCharCode(parseInt(ss.substring(p, p += 4), 16));
      }
    }
    p += 2; return sb.join('');
  }
  function unser_ref() {   p++; var r = parseInt(ss.substring(p, p = ss.indexOf(';', p)));  p++; return ht[r];}
  function __unserialize() {
    switch (ss.charAt(p++)) {
      case 'N': return ht[hv++] = unser_null();
      case 'b': return ht[hv++] = unser_boolean();
      case 'i': return ht[hv++] = unser_integer();
      case 'd': return ht[hv++] = unser_double();
      case 's': return ht[hv++] = unser_string();
      case 'U': return ht[hv++] = unser_unicode_string();
      case 'r': return ht[hv++] = unser_ref();
      case 'a': return unser_array();
      case 'O': return unser_object();
      case 'C': return unser_custom_object();
      case 'R': return unser_ref();
      default: return false;
    }
  }
  return __unserialize();
}

//---数组序列化的反转---
function unserialize(ss) {
  if (ss=="" || ss==undefined || ss==null) return '';
  //ss ='a:2:{i:0;s:60:"/public/upload/comment/8704/2017/10-14/15079840099736199.png";i:1;s:60:"/public/upload/comment/8704/2017/10-14/15079840132718554.jpg";}';
  ss=ss.substring(7);
  var arr = ss.split('i:'), rs=new Array();
  for (var i = 0; i < arr.length;i++){
    var ind0 = arr[i].indexOf('/public');
    var ind1 = arr[i].indexOf('";');
    var txt = arr[i].substring(ind0, ind1);
    rs.push(txt);
  }
  return rs;
}

//-----判断一个对象是不是空对象--------
function isEmptyObject(obj) {
   for (var key in obj) { return false };
   return true
};

function gettimestamp(){
  var timestamp = Date.parse(new Date());
  timestamp = timestamp / 1000;
  return timestamp;
}


function measureText(text, fontSize = 10) {
  text = String(text);
  var text = text.split('');
  var width = 0;
  text.forEach(function (item) {
    if (/[a-zA-Z]/.test(item)) {
      width += 7;
    } else if (/[0-9]/.test(item)) {
      width += 5.5;
    } else if (/\./.test(item)) {
      width += 2.7;
    } else if (/-/.test(item)) {
      width += 3.25;
    } else if (/[\u4e00-\u9fa5]/.test(item)) {  //中文匹配
      width += 10;
    } else if (/\(|\)/.test(item)) {
      width += 3.73;
    } else if (/\s/.test(item)) {
      width += 2.5;
    } else if (/%/.test(item)) {
      width += 8;
    } else {
      width += 10;
    }
  });
  return width * fontSize / 10;
}

//验证手机号
function check_mobile(phoneMobile){
  var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/;
  var ob={code:1};
  if (phoneMobile.length === 0) {
      ob.title='输入的手机号为空';
      ob.code=-1;   
  } else if (phoneMobile.length < 11) {
      ob.title ='手机号长度有误!';
      ob.code = -1; 
  } else if (!myreg.test(phoneMobile)) {
    ob.title = '手机号格式有误!';
    ob.code = -1; 
  }
  return ob;
}

module.exports = {
    formatTime: function(e, r) {
        var t = e ? new Date(1e3 * e) : new Date(), n = t.getFullYear(), o = t.getMonth() + 1, a = t.getDate(), u = t.getHours(), i = t.getMinutes(), f = t.getSeconds(), s = function(e) {
            return (e = e.toString())[1] ? e : "0" + e;
        };
        return void 0 !== r && 0 == r ? [ n, o, a ].map(s).join("-") + " " + [ u, i ].map(s).join(":") : [ n, o, a ].map(s).join("-") + " " + [ u, i, f ].map(s).join(":");
    },
    format: function(e, r) {
        var t = new Date();
        t.setTime(1e3 * e);
        var n = {
            "M+": t.getMonth() + 1,
            "d+": t.getDate(),
            "h+": t.getHours(),
            "m+": t.getMinutes(),
            "s+": t.getSeconds(),
            "q+": Math.floor((t.getMonth() + 3) / 3),
            S: t.getMilliseconds()
        };
        void 0 === r && (r = "yyyy-MM-dd hh:mm:ss"), /(y+)/.test(r) && (r = r.replace(RegExp.$1, (t.getFullYear() + "").substr(4 - RegExp.$1.length)));
        for (var o in n) new RegExp("(" + o + ")").test(r) && (r = r.replace(RegExp.$1, 1 == RegExp.$1.length ? n[o] : ("00" + n[o]).substr(("" + n[o]).length)));
        return r;
    },
    json2Form: function(e) {
        var r = [];
        for (var t in e) r.push(encodeURIComponent(t) + "=" + encodeURIComponent(e[t]));
        return r.join("&");
    },
    randomString: function(e) {
        e = e || 32;
        for (var r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", t = r.length, n = "", o = 0; o < e; o++) n += r.charAt(Math.floor(Math.random() * (t + 1)));
        return n;
    },
    inArray: function(e, r) {
        for (var t = 0; t < r.length; t++) if (e == r[t]) return !0;
        return !1;
    },
    sortSize: function(e, r) {
        return void 0 === r && (r = 0), r ? e.sort(function(e, r) {
            return r - e;
        }) : e.sort(function(e, r) {
            return e - r;
        }), e;
    },
    convertRequestArray: function(e, r) {
        for (var t = {}, n = 0; n < r.length; n++) t[e + "[" + n + "]"] = r[n];
        return t;
    },
    remainTime: function(e) {
        var r = "", t = !1, n = Math.floor(e / 864e5);
        r = n ? n + "天" : "", t = !!n, e -= 864e5 * n;
        var o = Math.floor(e / 36e5);
        r += o ? o + "时" : t ? "0时" : "", t = !!o, e -= 36e5 * o;
        var a = Math.floor(e / 6e4);
        r += a ? a + "分" : t ? "0分" : "", e -= 6e4 * a;
        var u = Math.floor(e / 1e3);
        return r += u ? u + "秒" : "0秒";
    },
    transTime: function(e) {
        var r = {
            hour: 0,
            minute: 0,
            second: 0
        }, t = Math.floor(e / 36e5);
        r.hour = t || "0", e -= 36e5 * t;
        var n = Math.floor(e / 6e4);
        r.minute = n || "0", e -= 6e4 * n;
        var o = Math.floor(e / 1e3);
        return r.second = o || "0", r;
    },
    Obj2Str: e,
    JumpTo: function(r, t, n) {
        var o = e(t);
        n ? wx.redirectTo({
            url: r + o
        }) : wx.navigateTo({
            url: r + o
        });
    },
    unserialize: unserialize,
    unserialize_o: unserialize_o,
    trim: trim,                   //去空格
    isEmptyObject: isEmptyObject, //判断空对象
    gettimestamp: gettimestamp,  //获取时间戳
    isString: isString,
    isArray: isArray,
    sub_last: sub_last,//去掉末尾一个字符
    measureText: measureText,//画布需要的函数
    check_mobile: check_mobile,//验证手机
};