随机产生中文字符的PHP语句理解不了

随机产生中文字符的PHP语句理解不了,第1张

mt_srand():为了保证随即性,所以要“播种”

注: 自 PHP 420 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现已自动完成。

====================================================

1理解第二个问题,就要了解中文的编码原理;因为中文是“宽字符”所以一个字节不够存储,起码要两个字节(如果是utf-8的存储格式那有可能要3个字节)。所以就要chr($c)chr(mt_rand(161,249))两个字节;(我估计你的默认编码应该是gb2312或者是它的超集gbk-----它们用两个字节存储一个汉字)

2这里两个字节对应的数都大于127就是说这个字节的第7位肯定是1;用来区别ascii码。而至于为什么是在(161,249)之间?因为汉字的存储是分区的(严格来讲不是的)GB2312的编码方式和古老的区位码颇有渊源。汉字的区位码每两位加上0xA0就是计算机中的GB2312码。比如“啊”区位码是1601,GB码是0xB0A1。B0 = 16 + A0,A1 = 01 + A0。

3由于在ac-af这个”区“中gb2312是没有定义的。所以我估计你的编码是gbk或者是gb18030

4当$c = 215 即 $c = 0xd7的时候:由于gbk在这个“区”中有几个“位”(fa-fe)是没用到的。

5你看看gbk的编码表就什么都明白了!!

function random($len) { 

$srcstr = "1a2s3d4f5g6hj8k9l0qwertyuiopzxcvbnm"; //后面只取了0-10共11个字符,所以第12个字符以后都是多余的

mt_srand(); //这里执行一次就是在浪费国家粮食

$strs = ""; //给$strs赋一个空值,后面使用$strs=的时候才不会报错

for ($i = 0; $i < $len; $i++) { //$len为4的时候,明明就循环了4次,你为什么说是3次

$strs = $srcstr[mt_rand(0, 10)];//这里的随机数与上面的没有关系

return $strs; 

}

$ch=range('A','G');//字母从A-G

$num=range(0,9);//数字从0-9

$x=$ch[mt_rand(0,6)]$num[mt_rand(0,8)];//这样获得第一个随机坐标$x,其他坐标一样方法

$y=$ch[mt_rand(0,6)]$num[mt_rand(0,8)];

$z=$ch[mt_rand(0,6)]$num[mt_rand(0,8)];

$charactors = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');

shuffle($charactors);

function GetCharactors($samples, $levels, $times, $result = array()) {

 $temp = array();

 for ($i = 0; $i < $times; $i++) {

  $temp[] = array_shift($samples);

 }

 $result[$levels] = implode('', $temp);

 $levels--;

 if ($levels > 0) {

  shuffle($samples);

  $result = GetCharactors($samples, $levels, $times, $result);

 }

 return $result;

}

print_r(GetCharactors($charactors, 5, 4));

以上就是关于随机产生中文字符的PHP语句理解不了全部的内容,包括:随机产生中文字符的PHP语句理解不了、看不懂下面PHP随机输出字符串的过程、怎么用php随机生成3组 类似 A3 F8 D4 的三组随机坐标 字母和数字都有限制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9646314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存