<?php
// mixed strgen ( integer $pocet_pismen [ , integer $slovnik ] )
// vraci false pri chybe, jinak nahodny retezec;
// pokud neni zadan parametr $slovnik, vybira se ze vsech alfanumerickych znaku.
// $slovnik - bitove pole; vybirat z vyctu:
// 1 = a-z (100)
// 2 = A-Z (010)
// 3 = a-zA-Z (110)
// 4 = 0-9 (001)
// 5 = a-z0-9 (101)
// 6 = A-Z0-9 (011)
// 7 = a-zA-Z0-9 (111)
// priklad: echo strgen(25,5);
// vypise retezec o 25 znacich z mnoziny M={a,b,...,y,z}U{0,1,...,8,9}
function strgen($pocet_pismen, $slovnik=7)
{
if (!is_int($pocet_pismen) or !is_int($slovnik)) { return false; }
if ($pocet_pismen<0 or $slovnik<0 or $slovnik>7) { return false; }
$a_mala = 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');
$a_velka = 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');
$a_cisla = array(0,1,2,3,4,5,6,7,8,9);
$a_vyber = array();
$ret = '';
if (($slovnik & 1) == 1) $a_vyber = $a_mala;
if (($slovnik & 2) == 2) $a_vyber = array_merge($a_vyber, $a_velka);
if (($slovnik & 4) == 4) $a_vyber = array_merge($a_vyber, $a_cisla);
srand((double)microtime()*1000000);
for($i=0;$i<$pocet_pismen;$i++) $ret .= $a_vyber[array_rand($a_vyber)];
return $ret;
}