文字列

文字列

ランダムな文字列を作成する

  • このエントリーをはてなブックマークに追加

特定の文字を使った、任意の長さのランダムな文字列を作成します。

この記事のポイント

  • 簡単にランダムな文字列を作る
  • アルファベット、数字、記号でランダムな文字列を作る

目次

基本編

基本編ではアルファベット(大文字、小文字)と数字を使って、10文字のランダムな文字列を作成していきます。

コード例

$res = null;
$string_length = 10;
$base_string = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',0,1,2,3,4,5,6,7,8,9];

for( $i=0; $i<$string_length; $i++ ) {
	$res .= $base_string[mt_rand( 0, count($base_string)-1)];
}

var_dump($res);

実行結果

実行結果

解説

1行目〜3行目までは、変数の初期化を行っています。
1行目の$resは処理結果を格納するための変数。

2行目の$string_lengthは作成する文字列の長さです。
ここの数字を「5」にすれば5文字に、「20」にすれば20文字の文字列を取得できます。

3行目の$base_stringは使う文字を全て格納した配列です。
今回は半角英数(大文字・小文字)を使っていますが、例えば他にも「(ハイフン)」や「_(アンダーハイフン)」などの記号を使いたかったり、その他の言語を混ぜたい場合にはこの配列に入れておきます。

for文が実際にランダム文字列を作成する部分です。
$string_lengthで指定した文字列の回数だけループします。

mt_rand関数は乱数を取得するための関数です。
引数で渡した範囲で乱数を返します。
今回のコードでは、count関数で配列の長さを取得することで、配列の長さの範囲で乱数を取得できるように指定しています。

最後のvar_dump関数はデバッグなどで活躍するダンプ出力用の関数です。

応用編

基本編ではアルファベットと数字のみを使用しました。
応用編ではさらに記号を加えてランダムな文字列を作っていきます。
またオプションとして、記号が文字列の先頭に来ないようにします。

コード例

$res = null;
$string_length = 10;
$base_string = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',0,1,2,3,4,5,6,7,8,9,'*','-','_'];

for( $i=0; $i<$string_length; $i++ ) {
	if( $i === 0 ) {
		$res .= $base_string[mt_rand( 0, count($base_string)-4)];
	} else {
		$res .= $base_string[mt_rand( 0, count($base_string)-1)];
	}
}

var_dump($res);

実行結果

実行結果(応用編)

解説

1行目〜3行目までは、先述のコードとほぼ同じです。
3行目の配列末尾に記号を追加している部分だけが異なります。

for文の中に、新しくif文が追加されています。
ここで、1文字目に記号が来ない処理を追記しています。
$i」が「0」の時、つまり1文字目の時のみmt_rand関数から数字を取得する範囲を「-4」し、記号が含まれないように制御しています。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。

  • このエントリーをはてなブックマークに追加
前のページへ 一覧ページへ一覧 次のページへ