分享编程~
 

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

图片验证码字符随机生成,自封装方法,php随机生成字符串,数字字母随机打乱,支持中文汉字字符串随机生成,

天天特卖抢好货

图片验证码字符随机生成,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;
}


上一篇:php判断当前服务http还是https下一篇:PHP自封装CSV文件导入导出类不依赖其他插件
赞(6) 踩(0)
您说多少就多少,您的支持是我最大的动力
赏金
微 信
赏金
支付宝
本文连接: https://www.yj521.com/article/46.html
版权声明: 本文为原创文章,版权归《越加网》所有,分享转载请注明出处!