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; }
■参考サイト
関連記事
-
-
PHPでプロキシ経由で他サーバーに接続
PHPでfile_get_contentsやcurlで他サーバに接続する際に自サ ...
-
-
PHPバージョンの確認
PHPでバージョンの確認をする際にphpinfo()を 使って調べてたけど、バー ...
-
-
フォルダにリンク制限をかける
imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...
-
-
PHPの配列でキーの最大値を取得
PHPの配列でキーの最大値を取得したかった。以下で対応する。 $test = a ...
-
-
phpMyAdminより高速で軽量なAdminerが凄い
MySQLをGUIで管理できるphpMyAdmin。特に不満はないんだけど、もっ ...
-
-
PHPとSQLiteで簡易BBSの作成
PHPとSQLiteの練習で簡易掲示板を作ったのでメモ。 &nbs ...
-
-
PHPの構文チェック
JSONLINTみたいにオンラインで構文チェックを できるサイト様があったのでメ ...
-
-
setcookieで「Cannot modify」エラー
PHPでsetcookieを使うと「Warning: Cannot modify ...
-
-
imgタグとPHPでグラフ作成
プラグインやライブラリを使わずにグラフを作る 機会があったのでメモ。 ■サンプル ...
-
-
PHPでコマンドを実行して画像を加工
PHPで画像をリサイズしたりサムネイルを作ろうとすると、 ソースが長くなって面倒 ...