usuarios - php generar nombre fichero aleatorio




Generando cadenas alfanuméricas(pseudo) aleatorias (10)

¿Cómo puedo generar una cadena alfanumérica (pseudo) aleatoria, algo así como: 'd79jd8c' en PHP?


1 línea

$FROM = 0; $TO = 'zzzz';
$code = base_convert(rand( $FROM ,base_convert( $TO , 36,10)),10,36);
echo $code;


He realizado la siguiente función rápida solo para jugar con la función range() . Simplemente podría ayudar a alguien en algún momento.

Function pseudostring($length = 50) {

    // Generate arrays with characters and numbers
    $lowerAlpha = range('a', 'z');
    $upperAlpha = range('A', 'Z');
    $numeric = range('0', '9');

    // Merge the arrays
    $workArray = array_merge($numeric, array_merge($lowerAlpha, $upperAlpha));
    $returnString = "";

    // Add random characters from the created array to a string
    for ($i = 0; $i < $length; $i++) {
        $character = $workArray[rand(0, 61)];
        $returnString .= $character;
    }

    return $returnString;
}

La respuesta de Jeremy es genial. Si, como yo, no está seguro de cómo implementar range (), puede ver mi versión usando range ().

<?php
$character_array = array_merge(range('a', 'z'), range(0, 9));
$string = "";
    for($i = 0; $i < 6; $i++) {
        $string .= $character_array[rand(0, (count($character_array) - 1))];
    }
echo $string;
?>

Esto hace exactamente lo mismo que Jeremy, pero usa matrices fusionadas donde usa una cadena, y usa count () donde usa strlen ().


Primero crea una cadena con todos tus personajes posibles:

 $characters = 'abcdefghijklmnopqrstuvwxyz0123456789';

También podría usar range() para hacer esto más rápidamente.

Luego, en un bucle, elija un número aleatorio y úselo como el índice de la cadena de $characters para obtener un carácter aleatorio y añádalo a su cadena:

 $string = '';
 $max = strlen($characters) - 1;
 for ($i = 0; $i < $random_string_length; $i++) {
      $string .= $characters[mt_rand(0, $max)];
 }

$random_string_length es la longitud de la cadena aleatoria.


Puede usar el siguiente código, copiado de este artículo . Es similar a las funciones existentes, excepto que puede forzar el recuento de caracteres especiales:

function random_string()
{
    // 8 characters: 7 lower-case alphabets and 1 digit
    $character_set_array = array();
    $character_set_array[] = array('count' => 7, 'characters' => 'abcdefghijklmnopqrstuvwxyz');
    $character_set_array[] = array('count' => 1, 'characters' => '0123456789');
    $temp_array = array();
    foreach ($character_set_array as $character_set) {
        for ($i = 0; $i < $character_set['count']; $i++) {
            $temp_array[] = $character_set['characters'][rand(0, strlen($character_set['characters']) - 1)];
        }
    }
    shuffle($temp_array);
    return implode('', $temp_array);
}

Si desea una forma muy sencilla de hacerlo, puede apoyarse en las funciones PHP existentes. Este es el código que uso:

substr( sha1( time() ), 0, 15 )

time() le da la hora actual en segundos, ya que epoch, sha1() cifra en una cadena de 0-9a-f, y substr() permite elegir una longitud. No tiene que comenzar en el carácter 0, y cualquiera que sea la diferencia entre los dos números será la longitud de la cadena.


Solución de una línea:

echo substr( str_shuffle( str_repeat( 'abcdefghijklmnopqrstuvwxyz0123456789', 10 ) ), 0, 7 );

Puede cambiar el parámetro substr para establecer una longitud diferente para su cadena.


Use la tabla ASCII para elegir un rango de letras, donde: $ range_start, $ range_end es un valor de la columna decimal en la tabla ASCII.

Me parece que este método es más agradable en comparación con el método descrito, donde el rango de caracteres se define específicamente en otra cadena.

// range is numbers (48) through capital and lower case letters (122)
$range_start = 48;
$range_end   = 122;
$random_string = "";
$random_string_length = 10;

for ($i = 0; $i < $random_string_length; $i++) {
  $ascii_no = round( mt_rand( $range_start , $range_end ) ); // generates a number within the range
  // finds the character represented by $ascii_no and adds it to the random string
  // study **chr** function for a better understanding
  $random_string .= chr( $ascii_no );
}

echo $random_string;

Ver más:


function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
echo generateRandomString();




random