Obteniendo una cadena alfanumérica usando PHP

[In English: https://josemmsimo.wordpress.com/2013/01/18/get-a-random-alphanumeric-string-using-php]

En este post, escribo como es posible generar un código aleatorio (con números, letras y símbolos) usando PHP muy fácilmente :-) Mi companía me pidió esto, para una tarea específica, y pensé que esto podría ser util para generar contraseñas aleatorias (entre otras cosas):

function getRandomCode(){
	$an = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-)(.:,;";
	$su = strlen($an) - 1;
	return substr($an, rand(0, $su), 1) .
			substr($an, rand(0, $su), 1) .
			substr($an, rand(0, $su), 1) .
			substr($an, rand(0, $su), 1) .
			substr($an, rand(0, $su), 1) .
			substr($an, rand(0, $su), 1);
}

Este código php genera 6 dígitos aleatorios. Para esto, se usa:

  • rand(X, Y): X es el número más pequeño que se puede generar e Y el más grande. Con esto, tendremos un número aleatorio.
  • substr(X, Y, Z): X es una cadena, Y es donde empezara una subcadena, y Z el número de letras que se escogerán de la cadena. Con esto, tendremos un dígito.
  • strlen(X): X es una cadena. Con esto, obtendremos el tamaño de una cadena.

Podríamos llamar 100 veces a la función así:

for ($i = 0; $i < 100; $i++)
	echo getRandomCode() . "<br />";

Y obtener un resultado similar a:
CSHY7S
SGYVAQ
YVU(W7
3MYKSW
WF0FWK
DOP1MU
IO-H3S …

4 comentarios en “Obteniendo una cadena alfanumérica usando PHP

  1. Si a eso le agregas un for para hacer las llamas a substr, y le pasas un len como variable, te queda para cualquier tipo de longitud

    Me gusta

  2. como hago para decir a la funcion donde el sistema me genera codigos aletorios que no solo sean aleatorios si no unicos tambien?
    public function genKey(){

    $userId=Yii::app()->user->id;
    //$key=uniqid($key);

    $key= sprintf(‘%4x’.$userId, mt_rand( 0, 0x3fff ) | 0x8000);//date(“dmy”).’%4x’.date(“Hi”).$userId, mt_rand( 0, 0x3fff ) | 0x8000);

    return $key;
    }

    Me gusta

Leave a comment

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s