PHP: Generar cadenas de texto aleatorias

Aca un par de funciones para generar cadenas de texto de manera aleatoria.

generateString

function generateString ($length = 8){
$string = "";
$possible = "0123456789bcdfghjkmnpqrstvwxyz";
$i = 0;
while ($i < $length) {
$char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
$string .= $char;
$i++;
}
return $string;
}

La función por defecto genera una cadena de texto de 8 caracteres de longitud. Hacemos uso de la función mt_rand (la cual es más rápida que rand, pero dependerá de las circunstancias su uso) que nos devolverá un valor aleatorio entre 0 y el número total de caracteres que contiene la variable $possible. Mediante substr extraemos un caracter de la ubicación generada al azar. Al final tenemos una cadena aleatoria de este tipo: qsd9pt4p. Muy útil para generar contraseñas aleatorias por defecto.

getUniqueCode

function getUniqueCode($length = 8){
$code = md5(uniqid(rand(), true));
if ($length != "") return substr($code, 0, $length);
else return $code;
}

En esta oportunidad generamos un cadena aleatorio con las funciones rand que genera un valor aleatorio, luego hacemos uso de uniqid que genera un valor único basado en la hora actual en microsegundos, y si a esto le añadimos el valor true al segundo parametro, le dara mayor entropía al valor generado. Mediante md5 encriptamos el valor. Un valor generado con esta función: 38b70ba0.

Vía My CV >>> Marc-Olivier Meunier

3 thoughts on “PHP: Generar cadenas de texto aleatorias

  1. Hola,
    Se te ocurre alguna forma de a partir de un id del usuario autonúmerico, como puede ser “54” conseguir una cadena alfanumerica de 10 caracteres. Y que al recibirla mediante alguna clave privada puedas saber a que id de usuario corresponde?
    Estoy probando métodos y no lo consigo. Por si me puedes ayudar a pensar la forma 😉
    Saludos y felicidades por el blog, es muy interesante.

Leave a Reply

Your email address will not be published. Required fields are marked *

Proudly powered by WordPress | Theme: Wanderz Blog by Crimson Themes.