La clase PHP Random Number Generator puede generar una cadena aleatoria en base al algoritmo Mersenne Twister.
Se puede generar una cadena de texto aleatoria de una determinada longitud y creada a partir de dígitos o letras en mayúsculas y minúsculas.
La clase también permite la inclusión de una lista de caracteres dados que se agregarán a la cadena generada.
Entre los archivos encontrarás una demostración a través del archivo example.php
Autor: Er. Rochak Chauhan
Descargar: PHP Random Number Generator
Entre los archivos encontrarás una demostración a través del archivo example.php
Autor: Er. Rochak Chauhan
Descargar: PHP Random Number Generator
PhpRandomNumberGenerator.inc.php
<?php
/**
* Class to generate random unique string and/or numbers.
*
* @author Rochak Chauhan <rochakchauhan@gmail.com>
*/
class PhpRandomNumberGenerator {
private $charLimit = 8;
private $charArray = array();
function generateNumber() {
$bits = $this->charLimit * 5;
$nos = (int) $bits / 25;
$random = "";
for ($i = 0; $i <= $nos; $i++) {
$random.=$this->getRandomBinaryNumbers();
}
$random = chunk_split($random, 5, "#*#");
//Set default char set
if (count($this->charArray) < (($this->charLimit)*2) ) {
$this->setDefaultCharArray();
}
$number = "";
$tmpArray = explode("#*#", $random);
foreach ($tmpArray as $ref => $b) {
$b = bindec($b);
$b = (int) $b;
if ($b >= 0) {
$c = $this->charArray[$b];
$number.= $c;
}
}
$strlen = strlen($number);
$diff = $strlen - $this->charLimit;
if ($diff < 0) {
$diff = abs($diff);
$pre = "";
for ($i = 0; $i < $diff; $i++) {
$pre.="0";
}
$number = $pre . $number;
}
$number = substr($number, 0, $this->charLimit);
return $number;
}
/**
* Function to set Default Char Array
*/
private function setDefaultCharArray() {
$numbersArray = $this->generateNumbersArray();
$this->charArray = array_merge($this->charArray, $numbersArray);
$upperCaseArray = $this->generateUpperCaseArray();
$this->charArray = array_merge($this->charArray, $upperCaseArray);
$lowerCaseArray = $this->generateLowerCaseArray();
$this->charArray = array_merge($this->charArray, $lowerCaseArray);
}
/**
* Function to generate lowercase alphbets array
*
* @return array
*/
private function generateLowerCaseArray() {
$return = array();
for ($i = 97; $i <= 122; $i++) {
$return[] = chr($i);
}
return $return;
}
/**
* Function to generate uppercase alphbets array
*
* @return array
*/
private function generateUpperCaseArray() {
$return = array();
for ($i = 65; $i <= 90; $i++) {
$return[] = chr($i);
}
return $return;
}
/**
* Function to generate Numbers array
*
* @return array
*/
private function generateNumbersArray() {
$return = array();
for ($i = 48; $i <= 57; $i++) {
$return[] = chr($i);
}
return $return;
}
/**
* Function to Generate Randaom Binary Numbers (between 25-30 chars)
*
* @return string
*/
private function getRandomBinaryNumbers() {
$rand = mt_rand();
return decbin($rand);
}
/**
* Function to set Char Limit
*
* @param int $char_limit
* @return void
*/
function setCharLimit($char_limit) {
$this->charLimit = $char_limit;
}
/**
* Function to set CharArray
*
* @param int $charArray
* @return void
*/
function setType($charArray) {
$this->charArray = array_merge($this->charArray, $charArray);
}
}
?>
No hay comentarios:
Publicar un comentario