勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPでユニークな文字列の作成

  PHP

PHPでユニークな文字列を作成したかった。MySQLとかのオートインクリメントの値ではなく、推定されにくいランダムな英数字が良かった。あと、出来るだけどのような状況でも共通して使いたいので、モジュールとか別途インストールはせず標準の関数とかだけで対応したかった。

調べたところ、簡単そうなのはuniqidという関数が良さそう。

 

echo md5(uniqid(rand(), true)); //196b4afca8e923b2ac60a9d575098eab

 

他にはV4のUUIDを作成する関数というのも見つかった。

 

function gen_uuid() {
	$uuid = array(
		'time_low' => 0,
		'time_mid' => 0,
		'time_hi' => 0,
		'clock_seq_hi' => 0,
		'clock_seq_low' => 0,
		'node' => array()
	);

	$uuid['time_low'] = mt_rand(0, 0xffff) + (mt_rand(0, 0xffff) << 16);
	$uuid['time_mid'] = mt_rand(0, 0xffff);
	$uuid['time_hi'] = (4 << 12) | (mt_rand(0, 0x1000));
	$uuid['clock_seq_hi'] = (1 << 7) | (mt_rand(0, 128));
	$uuid['clock_seq_low'] = mt_rand(0, 255);

	for ($i = 0; $i < 6; $i++) {
		$uuid['node'][$i] = mt_rand(0, 255);
	}

	$uuid = sprintf(
		'%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x',
		$uuid['time_low'],
		$uuid['time_mid'],
		$uuid['time_hi'],
		$uuid['clock_seq_hi'],
		$uuid['clock_seq_low'],
		$uuid['node'][0],
		$uuid['node'][1],
		$uuid['node'][2],
		$uuid['node'][3],
		$uuid['node'][4],
		$uuid['node'][5]
	);

	return $uuid;
}

 

■参考サイト

http://www.freeshow.net.cn/ja/questions/e65739bee30615391104e1011a79c2860b4606475ca21e202c0e1ec808e932d4/

 - PHP

  関連記事

PHPでyoutubeから更新分の情報を取得する(スクレイピング)

「○○のサイトから自動更新分を持ってきて 自サイトに反映させらへん?」と以前に聞 ...

PHPのカレンダー関数

カレンダー関数で使えるかもしれないものをメモ。 ■cal_days_in_mon ...

PHPで複数のファイルをまとめてzipファイル化し、ダウンロードさせる方法

PHPで複数のファイルをまとめてzipファイル化し、ユーザーにダウンロードさせた ...

google map apiとPHPを組み合わせて複数マーカーとウィンドウを連携させる

やりたかった事は、 mysqlから経度緯度、マーカー名、マーカーIDを持ってきて ...

Mailtrap & PHPMailerでメールサーバ無しの環境でもメール送信テストを行う方法

開発環境等メールサーバが無い環境でメール送信テストを行う際にMailtrapとい ...