You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
2.9 KiB

5 years ago
5 years ago
  1. <?php
  2. namespace App\Service\v3\Implementations;
  3. use App\Service\v3\Interfaces\HelperServiceInterface;
  4. class HelperService implements HelperServiceInterface
  5. {
  6. public function makeNumCode($length)
  7. {
  8. // 获取验证码
  9. $codeArr = array_map(function ($item) {
  10. return mt_rand(0,9);
  11. }, array_pad([], $length, 0));
  12. // 返回验证码
  13. return implode('', $codeArr);
  14. }
  15. /**
  16. * 请求参数判空
  17. * @param mixed $var 参数
  18. * @return bool
  19. */
  20. public function nonempty($var)
  21. {
  22. return ! (
  23. isset($var)
  24. && $var
  25. && !empty($var)
  26. && !is_null($var)
  27. && $var != 'undefined'
  28. && $var != 'unknown'
  29. && $var != 'null'
  30. && $var != 'false'
  31. );
  32. }
  33. public function filterEmoji($str)
  34. {
  35. $str = preg_replace_callback(
  36. '/./u',
  37. function (array $match) {
  38. return strlen($match[0]) >= 4 ? '' : $match[0];
  39. },
  40. $str
  41. );
  42. $search = array(" "," ","\n","\r","\t");
  43. $replace = array("","","","","");
  44. $str = str_replace($search, $replace, $str);
  45. return $str;
  46. }
  47. /*
  48. * 版本号比较 by sam 20170412
  49. * @param $version1 版本A :5.3.2
  50. * @param $version2 版本B :5.3.0
  51. * @return int -1版本A小于版本B , 0版本A等于版本B, 1版本A大于版本B
  52. *
  53. * 版本号格式注意:
  54. * 1.要求只包含:点和大于等于0小于等于2147483646的整数 的组合
  55. * 2.boole型 true置1,false置0
  56. * 3.不设位默认补0计算,如:版本号5等于版号5.0.0
  57. * 4.不包括数字 负数 的版本号 ,统一按0处理
  58. *
  59. * @example:
  60. * if (versionCompare('5.2.2','5.3.0')<0) {
  61. * echo '版本1小于版本2';
  62. * }
  63. */
  64. function versionCompare($versionA,$versionB)
  65. {
  66. if ($versionA > 2147483646 || $versionB > 2147483646) {
  67. throw new Exception('版本号,位数太大暂不支持!', '101');
  68. }
  69. $dm = '.';
  70. $verListA = explode($dm, (string)$versionA);
  71. $verListB = explode($dm, (string)$versionB);
  72. $len = max(count($verListA), count($verListB));
  73. $i = -1;
  74. while ($i++ < $len) {
  75. $verListA[$i] = intval(@$verListA[$i]);
  76. if ($verListA[$i] < 0) {
  77. $verListA[$i] = 0;
  78. }
  79. $verListB[$i] = intval(@$verListB[$i]);
  80. if ($verListB[$i] < 0) {
  81. $verListB[$i] = 0;
  82. }
  83. if ($verListA[$i] > $verListB[$i]) {
  84. return 1;
  85. } else if ($verListA[$i] < $verListB[$i]) {
  86. return -1;
  87. } else if ($i == ($len - 1)) {
  88. return 0;
  89. }
  90. }
  91. }
  92. }