ホームページ  >  記事  >  バックエンド開発  >  [PHP] openssl_random_pseudo_bytes 関数と Base64_encode 関数を利用してランダムな文字列を生成する

[PHP] openssl_random_pseudo_bytes 関数と Base64_encode 関数を利用してランダムな文字列を生成する

WBOY
WBOYオリジナル
2016-06-23 13:36:591169ブラウズ

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);

この関数は非常に多用途であり、ビジネス ニーズに応じて適切に変更して、静的メソッドとして呼び出すことができます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:strnatcmp() 関数次の記事:strnatcmp() 関数