Random\Randomizer::getBytesFromString
(PHP 8 >= 8.3.0)
Random\Randomizer::getBytesFromString — 文字列からランダムにバイト列を取得する
説明
入力となる string
から等確率に選択した、ランダムなバイト列を含む文字列を、
指定された length
だけ返します。
特定のバイトが選ばれる確率は、
入力となる string
に占める割合に比例します。
それぞれのバイトの頻度が同じ場合、
それぞれのバイトが選ばれる確率は等しくなります。
パラメータ
string
-
戻り値のために、バイト列が選択される文字列
length
-
バイト単位で返されるランダムな文字列の長さ。
1
以上でなければいけません。
戻り値
入力された 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 2要素認証向けにランダムなコードを生成する
<?php
// The Secure engine is the default, but we make it explicit, because
// multi-factor codes are security sensitive.
$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
参考
- Random\Randomizer::getBytes() - ランダムなバイト列を取得する
+add a note
User Contributed Notes
There are no user contributed notes for this page.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google