(PHP 8 >= 8.3.0)
Random\Randomizer::getBytesFromString — 從來源字串取得隨機位元組
從輸入的 string
中均勻地選取隨機位元組,生成一個長度為 length
的字串。
每個位元組被選取的機率與其在輸入 string
中的佔比成正比。如果每個位元組出現的次數相同,則每個位元組被選取的機率相等。
一個包含從輸入 string
中獲取的指定數量隨機位元組的 字串。
string
為空,將拋出 ValueError。
length
的值小於 1
,將拋出 ValueError。
Random\Randomizer::$engine
的 Random\Engine::generate() 方法拋出的任何 Throwable。
範例 #1 Random\Randomizer::getBytesFromString() 範例
<?php
$randomizer = new \Random\Randomizer();
printf(
"%s.example.com",
$randomizer->getBytesFromString('abcdefghijklmnopqrstuvwxyz0123456789', 16)
);
?>
上述範例將輸出類似以下的內容
3zsw04eiubcf82jd.example.com
範例 #2 產生多因素驗證的隨機碼
<?php
// Secure 引擎是預設的,但我們在此明確指定,因為
// 多因素驗證碼具有安全性敏感性。
$randomizer = new \Random\Randomizer(new \Random\Engine\Secure());
echo implode('-', str_split($randomizer->getBytesFromString('0123456789', 20), 5));
?>
上述範例將輸出類似以下的內容
11551-80418-27047-42075
範例 #3 從非均勻分佈的字串中選取
<?php
$randomizer = new \Random\Randomizer();
echo $randomizer->getBytesFromString('aaaaabcdef', 20);
?>
上述範例將輸出類似以下的內容
fddacbeaaeaaacaaaaca