海运的博客

PHP随机生成英文字符/密码及可阅读用户名

发布时间:December 18, 2013 // 分类:PHP // No Comments

<?php
   function genstr($num)   
   {  
      for ($i = 0; $i <= $num; $i++)  
      {  
         $str .= chr(mt_rand(97, 122));  
      }  
      return $str;  
   }  

   function geenstr($num) {
      return substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), 0, $num);
   }

   echo genstr(6); 
?>

20231111更新:

<?php
function isEveryCharInString($needle, $haystack) {
  for ($i = 0; $i < strlen($needle); $i++) {
    if (strpos($haystack, $needle[$i]) !== false) {
      return true; 
    }
  }
  return false; 
}

function readable_random_string($length = 14){ 
  $consonants = array("b","c","d","f","g","h","j","k","l","m","n","p","r","s","t","v","w","x","y","z"); 
  $conscount = count($consonants) - 1;
  $vowels = array("a","e","i","o","u"); 
  $vowcount = count($vowels) - 1;
  $password = ''; 
  for($i = 1; $i <= $length; $i++) { 
    if ($i % 2 == 0) {
      $password .= $vowels[random_int(0, $vowcount)]; 
    } else {
      $password .= $consonants[random_int(0, $conscount)]; 
    }
  } 
  return $password; 
}

function generate_password($length = 14, $special = true, $extra_special = true) {
  $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  $special_chars = '!@#$%^&*()';
  $extra_special_chars = '-_[]{}<>~`+=,.;:/\?|';
  //$extra_special_chars = '-_ []{}<>~`+=,.;:/?|';
  if ($special) {
    $chars .= $special_chars;
  }
  if ($extra_special) {
    $chars .= $extra_special_chars;
  }

  while (true) {
    $password = '';
    for ($i = 1; $i <= $length; $i++) {
      $password .= substr($chars, random_int(0, strlen($chars) - 1), 1);
    }
    if (($special && ! isEveryCharInString($password, $special_chars)) || ($extra_special && ! isEveryCharInString($password, $extra_special_chars))) {
      continue;
    }
    return $password;
  }
}

$length = 14;
echo readable_random_string($length).PHP_EOL;
echo generate_password($length, false, false).PHP_EOL;
echo generate_password($length, true, false).PHP_EOL;
echo generate_password($length).PHP_EOL;

标签:none

评论已关闭

分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...