Str.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. * Str.php
  4. * Created on 2020/9/7 15:23
  5. * Create by Wpeishi
  6. */
  7. namespace App\Handlers;
  8. class Str
  9. {
  10. /**
  11. * 获取随机字符串
  12. * @param int $length 长度
  13. * @param string $type 类型
  14. * @param int $convert 转换大小写
  15. * @return string 随机字符串
  16. */
  17. public static function random($length = 6, $type = 'string', $convert = 0)
  18. {
  19. $config = array(
  20. 'number' => '1234567890',
  21. 'letter' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
  22. 'string' => 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789',
  23. 'all' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
  24. );
  25. if (!isset($config[$type]))
  26. $type = 'string';
  27. $string = $config[$type];
  28. $code = '';
  29. $strlen = strlen($string) - 1;
  30. for ($i = 0; $i < $length; $i++) {
  31. $code .= $string{mt_rand(0, $strlen)};
  32. }
  33. if (!empty($convert)) {
  34. $code = ($convert > 0) ? strtoupper($code) : strtolower($code);
  35. }
  36. return $code;
  37. }
  38. /**
  39. * 生成唯一不重复 32 位字符串
  40. */
  41. public static function uniqueString()
  42. {
  43. return md5(uniqid(microtime(true), true));
  44. }
  45. /**
  46. * 返回两位数字母
  47. * @param $in_array
  48. * @return string
  49. */
  50. public static function getChr($in_array)
  51. {
  52. $return_sta = chr(rand(65, 90)) . chr(rand(65, 90));
  53. if (!count($in_array) || !in_array($return_sta, $in_array)) {
  54. return $return_sta;
  55. }
  56. $str = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'L', 'M', 'N'];
  57. for ($i = 0; $i < strlen((string)$str); $i++) {
  58. for ($j = 0; $j < strlen((string)$str); $j++) {
  59. if (!in_array($str[$i] . $str[$j], $in_array)) {
  60. return $str[$i] . $str[$j];
  61. continue;
  62. }
  63. }
  64. }
  65. }
  66. }