openssl_random_pseudo_bytes 関数自体は、指定された数のランダムなバイトを生成するために使用されるため、この関数を使用してランダムな文字列を生成する場合は、base64_encode 関数も使用する必要があります。以下に示すように:
public static function getRandomString($length = 42) { /* * Use OpenSSL (if available) */ if (function_exists('openssl_random_pseudo_bytes')) { $bytes = openssl_random_pseudo_bytes($length * 2); if ($bytes === false) throw new RuntimeException('Unable to generate a random string'); return substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $length); } $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; return substr(str_shuffle(str_repeat($pool, 5)), 0, $length); }
base64_encode 関数を呼び出した後、ランダムに生成された文字列内の不要な文字を削除するために、結果に対して置換操作も実行されます。
もちろん、openssl_random_pseudo_bytes 関数を使用する前に、function_exists を使用して、関数が実行時に利用可能であることを確認することが最善です。利用できない場合は、プラン B を使用してください:
substr(str_shuffle(str_repeat($pool, 5)), 0, $length);
この関数は非常に多用途であり、ビジネス ニーズに応じて適切に変更して、静的メソッドとして呼び出すことができます。