2024 日本 PHP 研討會

Random\Randomizer::getBytesFromString

(PHP 8 >= 8.3.0)

Random\Randomizer::getBytesFromString從來源字串取得隨機位元組

說明

公開 Random\Randomizer::getBytesFromString(字串 $string, 整數 $length): 字串

從輸入的 string 中均勻地選取隨機位元組,生成一個長度為 length 的字串。

每個位元組被選取的機率與其在輸入 string 中的佔比成正比。如果每個位元組出現的次數相同,則每個位元組被選取的機率相等。

參數

string (字串)

返回的位元組將從這個 字串 中選取。

length (長度)

應返回的隨機 字串 的長度,以位元組為單位;必須大於等於 1

返回值

一個包含從輸入 string 中獲取的指定數量隨機位元組的 字串

錯誤/例外

範例

範例 #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

另請參閱

新增註解

使用者貢獻的註解

此頁面沒有使用者貢獻的註解。
To Top