A veces nos veremos en la necesidad de generar caracteres aleatorios o una cadena o string aleatoria. También puede que necesitemos generar algún NIP o dígitos al azar.
Es por eso que aquí traigo estas funciones que pueden servirnos en un apuro.
Nota importante: si vas a usar estas funciones para fines seguros o criptográficamente seguros entonces utiliza random_int
en lugar de rand
.
Esta función toma un banco de carácteres (modificable) y elige uno de ellos al azar en un ciclo que va desde 0 hasta la longitud deseada.
<?php
function cadenaAleatoria($longitud = 10)
{
$caracteres = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$cadenaAleatoria = '';
for ($i = 0; $i < $longitud; $i++) {
$cadenaAleatoria .= $caracteres[rand(0, strlen($caracteres) - 1)];
}
return $cadenaAleatoria;
}
La longitud es un parámetro opcional cuyo valor por defecto es 10. De esta manera nos devolverá dicho string con una longitud de 10 (si no llamamos a la función con argumentos).
Si quisiéramos sólo números aleatorios (por ejemplo, para un código de verificación), sería así:
<?php
function digitosAleatorios($longitud = 4)
{
$caracteres = '0123456789';
$cadenaAleatoria = '';
for ($i = 0; $i < $longitud; $i++) {
$cadenaAleatoria .= $caracteres[rand(0, strlen($caracteres) - 1)];
}
return $cadenaAleatoria;
}
En este caso, si llamamos a la función sin argumentos nos devolverá 4 números aleatorios en cada llamada.
Tal vez en algún momento necesitemos que nuestro string al azar lleve guiones bajos, guiones, etcétera. Podemos lograrlo de la siguiente manera:
<?php
function cadenaAleatoriaLarga($longitud = 10)
{
$caracteres = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_!"#$%&/()?¡+{}-,;.:[]';
$cadenaAleatoria = '';
for ($i = 0; $i < $longitud; $i++) {
$cadenaAleatoria .= $caracteres[rand(0, strlen($caracteres) - 1)];
}
return $cadenaAleatoria;
}
Aquí traerá incluidos signos como !
,#
,"
, etcétera.
Para probar las funciones podemos hacer un ciclo e ir imprimiendo los resultados, así:
<?php
for($x = 0; $x < 5; $x++){
echo "cadenaAleatoria --> " . cadenaAleatoria() . "<br>";
echo "cadenaAleatoria con longitud de 20 --> " . cadenaAleatoria(20) . "<br>";
echo "digitosAleatorios --> " . digitosAleatorios() . "<br>";
echo "digitosAleatorios con longitud de 20 --> " . digitosAleatorios(20) . "<br>";
echo "cadenaAleatoriaLarga --> " . cadenaAleatoriaLarga() . "<br>";
echo "cadenaAleatoriaLarga con longitud de 20 --> " . cadenaAleatoriaLarga(20) . "<br>";
}
Al ejecutarlo, los resultados son lo siguientes:
cadenaAleatoria --> cFY0verQBA
cadenaAleatoria con longitud de 20 --> z9zXaT14Bx27I3dQRVEs
digitosAleatorios --> 8096
digitosAleatorios con longitud de 20 --> 00173793063697953580
cadenaAleatoriaLarga --> q{Z1]vNQo{
cadenaAleatoriaLarga con longitud de 20 --> 2MK.f8QIQ,/3An1Gj)Kv
cadenaAleatoria --> 5RgBB4uGSE
cadenaAleatoria con longitud de 20 --> 5zvkoKAlfaGp0iVJv7T3
digitosAleatorios --> 0065
digitosAleatorios con longitud de 20 --> 51893855213964342617
cadenaAleatoriaLarga --> NA&7vQ,a]X
cadenaAleatoriaLarga con longitud de 20 --> SapTG$R;Rs/LOFi;HEU7
cadenaAleatoria --> X0wr2iBYl4
cadenaAleatoria con longitud de 20 --> haYynZvsfT3ZJRcSbm2l
digitosAleatorios --> 4311
digitosAleatorios con longitud de 20 --> 83632219956881992785
cadenaAleatoriaLarga --> 33fcJT,8NH
cadenaAleatoriaLarga con longitud de 20 --> _8I6UuhsqP:!$4UoUzRy
cadenaAleatoria --> 3VI6xhfOdI
cadenaAleatoria con longitud de 20 --> 6wGXAI1czkQbnQf7SfNI
digitosAleatorios --> 3962
digitosAleatorios con longitud de 20 --> 70233882940602793176
cadenaAleatoriaLarga --> e(74C6q+HA
cadenaAleatoriaLarga con longitud de 20 --> Jug(vg(#+OmgXp)O{Hz,
cadenaAleatoria --> 3XkFiRpMcV
cadenaAleatoria con longitud de 20 --> 1KQoZvQXFyiQUQMM2RoY
digitosAleatorios --> 9571
digitosAleatorios con longitud de 20 --> 84857348895210758209
cadenaAleatoriaLarga --> -vjcP[mr#3
cadenaAleatoriaLarga con longitud de 20 --> #k#0?9C(7Tc0N6YF,9F"
De esta forma podemos generar múltiples caracteres aleatorios. Si quieres generar fechas aleatorias, puedes leer este post.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios