borrame.com - Colección particular de recortes de código y documentación para programación web

Canales RSS

Lo más fresco

  1. Enlaces sobre desarrollo web Modificado
  2. Cadena aleatoria en PHP Modificado
  3. Recortar texto Nuevo

Sugerencias del chef

Lo más visitado

  1. Canales RSS
  2. Formato condicional según el día de la semana
  3. Enlaces sobre desarrollo web
  4. Recortar texto
  5. Convertir de minutos a horas
Compartir esta página

Cadena aleatoria

Una cadena aleatoria criptográficamente segura es algo que siempre viene bien. Requiere PHP/7 o superior.

/** * Genera una cadena aleatoria de la longitud indicada con caracteres de una lista. * * @version 2022-10-06 */ function cadenaAleatoria(int $longitud = 16, string $caracteres = '0123456789abcdefghijklmnopqrstuvwxyz'): string { $cadena = ''; $max = mb_strlen($caracteres) - 1; for ($i = 0; $i < $longitud; $i++) { $cadena .= mb_substr($caracteres, random_int(0, $max), 1); } return $cadena; }

Obsérvese que existe una función nativa parecida desde PHP/8.3, pero funciona a nivel de bytes, por lo que solo es útil cuando el diccionario contiene únicamente caracteres de un byte.

$randomizer = new \Random\Randomizer(); echo $randomizer->getBytesFromString('0123456789abcdefghijklmnopqrstuvwxyz', 16);

Ejemplos de uso

// Imagen que no se lee de la caché echo '<img src="foo.png?' . cadenaAleatoria() . '">'; // Generar una contraseña echo cadenaAleatoria(10); // Rellenar una quiniela echo cadenaAleatoria(14, '111XX2'); // Dar conversación a un robot echo cadenaAleatoria(1024, '01'); // Chino nivel medio echo cadenaAleatoria(10, '的一是不了人我在有他这为之大来以个中上们');

También disponemos de versión en JavaScript.

Historial

v2022-10-06
Versión criptográficamente segura.
v2012-07-15
Documentar mejor (sin cambios en el código).
v2010-06-03
Version multi-byte.
v2008-03-17
Eliminado mt_srand(), es innecesario desde PHP/4.2.0.
Naturalmente, es suficiente con calcular la longitud de $caracteres una vez.
Reemplazado el operador {} por [] (las llaves las van a quitar en PHP/6).
v2005-05-24
Primera versión.

Gracias a Pedro Graca por llamarme la atención sobre los dos fallos obvios de la primera versión… en diciembre de 2005. Más vale tarde que nunca.

Esta página ha sido impresa el miércoles 12 de agosto de 2026 (15:10:10 +0200) desde https://borrame.com/recortes/php/cadena-aleatoria.html. La última vez que miré contenía HTML válido con CSS fresquito y si tiene flatas de ortografía ha sido sin querer.

Lorem ipsum dolor sit amet.

© 2005-2026 by Álvaro González (alvaro.es) • Burgos (España) • borrame.com