ConFoo 2025

Random\Randomizer::getBytesFromString

(PHP 8 >= 8.3.0)

Random\Randomizer::getBytesFromStringRenvoie des octets aléatoires à partir d'une chaîne

Description

public Random\Randomizer::getBytesFromString(string $string, int $length): string

Génère une chaîne contenant des octets aléatoires uniformément sélectionnés de la string d'entrée avec la length demandée.

La chance pour un octet d'être sélectionné est proportionnelle à sa part de la string d'entrée. Si chaque octet se produit le même nombre de fois, chaque octet a la même probabilité d'être sélectionné.

Liste de paramètres

string

La chaîne de caractères d'entrée à partir de laquelle les octets retournés sont sélectionnés.

length

La longueur de la chaîne aléatoire chaîne de caractères qui doit être retournée en octets; doit être 1 ou plus.

Valeurs de retour

Une chaîne de caractères contenant le nombre demandé d'octets aléatoires pris dans l'entrée string.

Erreurs / Exceptions

Exemples

Exemple #1 Exemple de Random\Randomizer::getBytesFromString()

<?php
$randomizer
= new \Random\Randomizer();

printf(
"%s.example.com",
$randomizer->getBytesFromString('abcdefghijklmnopqrstuvwxyz0123456789', 16)
);
?>

Résultat de l'exemple ci-dessus est similaire à :

3zsw04eiubcf82jd.example.com

Exemple #2 Générer un code aléatoire pour l'authentification multi-facteurs

<?php
// Le moteur Secure est le moteur par défaut, mais nous le rendons explicite, car
// les codes multi-facteurs sont sensibles à la sécurité.
$randomizer = new \Random\Randomizer(new \Random\Engine\Secure());

echo
implode('-', str_split($randomizer->getBytesFromString('0123456789', 20), 5));
?>

Résultat de l'exemple ci-dessus est similaire à :

11551-80418-27047-42075

Exemple #3 Sélectionner à partir d'une chaîne avec une distribution non uniforme

<?php
$randomizer
= new \Random\Randomizer();

echo
$randomizer->getBytesFromString('aaaaabcdef', 20);
?>

Résultat de l'exemple ci-dessus est similaire à :

fddacbeaaeaaacaaaaca

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top