站三界导航
首页 PHP代码php随机生成字符串数字字母随机打乱中文汉字随机字符

php随机生成字符串数字字母随机打乱中文汉字随机字符

  • PHP代码
  • 来源:站三界导航
  • 84阅读
  • 2022-06-27

图片验证码字符随机生成,php随机生成字符串,数字字母随机打乱,同时还支持中文汉字字符串随机生成,自封装方法详细内容如下:

语法: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;
}
本文结束
本文来自投稿,不代表站三界导航立场,如若转载,请注明出处:https://www.zhansanjie.com/article/details/8908.html

版权声明:

1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

2、本站仅提供信息发布平台,不承担相关法律责任。

3、若侵犯您的版权或隐私,请联系本站管理员删除。

4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。

分享
站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。