Perl - PHP:随机字符串生成

时间:2011-04-14 06:22:15

标签: php perl random

我不知道perl语言,但我正在尝试自定义用perl语言编写的应用程序。我想知道以下perl代码的逻辑或含义。我知道这段代码用于生成随机字符串,但我想要它的详细信息,即我想知道如何在PHP中生成相同的随机字符串?请有人给我这个perl代码的PHP代码!!

   sub generate_rand_string {

    #warn "generate_rand_string";

    my $chars = shift
      || 'aAeEiIoOuUyYabcdefghijkmnopqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789';
    my $num = shift || 1024;

    require Digest::MD5;

    my @chars = split '', $chars;
    my $ran;
    for ( 1 .. $num ) {
        $ran .= $chars[ rand @chars ];
    }
    return Digest::MD5::md5_hex($ran);
}

请有人帮助我!!!!

2 个答案:

答案 0 :(得分:1)

模拟步骤:

  1. 接受字符串,如果不是,则默认为aAeEiIoOuUyYabcdefghijkmnopqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789 提供了字符串
  2. 接受一个号码,如果没有提供号码,则默认为1024
  3. 将字符串拆分为字符
  4. 创建一个包含从上面一组字符中选择的随机字符的字符串
  5. 返回字符串
  6. 的MD5哈希的十六进制表示形式

答案 1 :(得分:0)

在PHP中它想要这样:

function generate_rand_string($chars = null, $length = 1024) {
    if($chars == null) {
        $chars = 'aAeEiIoOuUyYabcdefghijkmnopqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789';
    }

    $rand = '';
    for($i = 0; $i < $length; $i++) {
        $rand .= $chars[ rand(0, strlen($chars) - 1) ];
    }

    return md5($rand);
}