Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从正则表达式生成随机字符串的PHP组件_Php_Regex - Fatal编程技术网

从正则表达式生成随机字符串的PHP组件

从正则表达式生成随机字符串的PHP组件,php,regex,Php,Regex,我正在搜索从正则表达式生成随机字符串的PHP组件。我搜索了这个论坛,但只找到了PERL等解决方案()。有这样一个开源类吗?我不熟悉,我(直到现在)还不熟悉任何能够实现这一点的php库,转换类似的东西将是一项艰巨的任务 相反,您可以简单地执行以下操作: function random($length) { $random_string = ""; $valid_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

我正在搜索从正则表达式生成随机字符串的PHP组件。我搜索了这个论坛,但只找到了PERL等解决方案()。有这样一个开源类吗?

我不熟悉,我(直到现在)还不熟悉任何能够实现这一点的php库,转换类似的东西将是一项艰巨的任务

相反,您可以简单地执行以下操作:

function random($length)
{
    $random_string = "";
    $valid_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+-=[]{}\\|";

    $num_valid_chars = strlen($valid_chars);

    for ($i = 0; $i < $length; $i++)
    {
        $random_pick = mt_rand(1, $num_valid_chars);
        $random_char = $valid_chars[$random_pick-1];
        $random_string .= $random_char;
    }
    return $random_string;
}

echo random(20); //generates a random string, 20 characters long.
函数随机($length)
{
$random_string=“”;
$valid_chars=“abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzo123456789!@$%^&*()_+-=[]{}\\\ |”;
$num\u valid\u chars=strlen($valid\u chars);
对于($i=0;$i<$length;$i++)
{
$random\u pick=mt\u rand(1,$num\u valid\u chars);
$random_char=$valid_chars[$random_pick-1];
$random\u string.=$random\u char;
}
返回$random_字符串;
}
回波随机(20)//生成一个20个字符长的随机字符串。
可以找到名为ReverseRegex的库。
截至2014年1月,该项目似乎还没有结束

用法似乎很简单

$lexer = new  Lexer('[a-z]{10}');
$gen   = new SimpleRandom(10007);
$result = '';

$parser = new Parser($lexer,new Scope(),new Scope());
$parser->parse()->getResult()->generate($result,$gen);

echo $result;
给它一个正则表达式,给它一个随机种子并生成您的字符串。
上面的示例取自github站点,生成一个10个字符长的随机字符串,该字符串仅由字母组成


(最初在中找到)

正则表达式用于匹配已生成的字符串,而不是生成它们。通常,询问库等问题与SO无关;您可以引用找到的PERL解决方案以及如何转换为PHP来改写您的问题。@Jonathan Kuhn:换句话说,我想生成与所选正则表达式匹配的随机字符串。可能与look-Ath重复,它提到了一个PHP字符串。这个答案是:
$validCharacters=range(0,9)//使用range()选择您的字符。
然后
$randVal=infrade(“”,array_rand($validCharacters,$length))