- 52浏览
- 2023-06-20
语法:rand_strs(length,type,string);
参数:
(1)length:截取字符串的长度[整形][非必填]默认值为4;
(2)type:字符串截取的类型[整形][非必填],
1:纯数字;
2:纯小写字母;
3:纯大写字母;
4:大小写字母;
5:小写字母和数字;
6:大写字母和数字;
7:字母和数字;
8:预生成汉字;
9:随机自动生成汉字
0其他:字母和数字,去掉了容易混淆的字母oOlZz和数字012;
(3)string:[字符串][非必填]在方法已有的字符串基础上追加字符串;
返回值:string字符串
调用示例:
// 示例一(随机六位字符串,类型默认:去掉容易混淆的数字 字母)
$str = rand_strs(6);
echo $str;
// 示例二(随机四位字符串,类型为预生成的简单汉字)
$str = rand_strs(4, 8);
echo $str;
// 示例三(随机四位字符串,类型为预生成的简单汉字字符串并自定义的字符串“越加网分享编程”也参与随机字符中)
$str = rand_strs(4, 8, '越加网分享编程');
echo $str;
自封装的方法:
/**
* Notes: 获取随机字符串
* User: ZHL
* Return : string
*/
function rand_strs($len=4, $type=0, $str=''){
$newStr = ''; // 要获取的字符串
if(preg_match("/[\x7f-\xff]/", $str) && $type != '8' && $type != '9'){ // 类型不为8,9并且存在中文字符时强制用汉字
$str = '';
}
switch($type){ // 选定字符串类型
case 1: // 纯数字
$str = '0123456789'.$str;
break;
case 2: // 纯小写字母
$str = 'abcdefghijklmnopqrstuvwxyz'.$str;
break;
case 3: // 纯大写字母
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.$str;
break;
case 4: // 纯字母
$str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.$str;
break;
case 5: // 小写字母和数字
$str = 'abcdefghijklmnopqrstuvwxyz0123456789'.$str;
break;
case 6: // 大写字母和数字
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.$str;
break;
case 7: // 字母和数字
$str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.$str;
break;
case 8: // 预生成汉字
$str = '大小多少左右上下白云太阳月亮星工人爸妈爷奶今天金木水火土红色衣花公母哭笑苦高兴吃玩乐打豆羊牛马车水电飞鸟东西南北方向'.$str;
break;
case 9: // 自动生成汉字
for($i=0; $i<$len; $i++){
// 使用chr()函数拼接双字节汉字,前一个chr()为高位字节,后一个为低位字节
$strNo = chr(mt_rand(0xB0,0xD0)).chr(mt_rand(0xA1, 0xF0));
$str .= iconv('GB2312', 'UTF-8', $strNo); // 转码
}
break;
default :
// 默认,去掉了容易混淆的字母oOlZz和数字012
$str = 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXY3456789'.$str;
break;
}
if($type != 9){ // 所需大于固定长度时
$strLen = mb_strlen($str,'UTF8');
if($len > $strLen) { // 位数过长重复字符串一定次数
$str = str_repeat($str,$len);
}
}
if($type == 8 || $type == 9){ //汉字时
// 计算最大长度-1
$strLen = mb_strlen($str,'UTF8')-1;
// 循环 $len 次获得字符串
for($i=0;$i<$len;$i++){
$newStr .= mb_substr($str, floor(mt_rand(0,$strLen)),1,'UTF8'); //随机长度内数字,截取随机数向后一个长度
}
}else{ // 普通字符串
$newStr = substr(str_shuffle($str), 0, $len); // 字符串随机排序后截取$len长度
}
return $newStr;
}
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。