ホームページ  >  記事  >  バックエンド開発  >  PHP で一意の識別子を生成する方法、php_PHP で識別子を生成するチュートリアル

PHP で一意の識別子を生成する方法、php_PHP で識別子を生成するチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:13:36813ブラウズ

PHPで一意の識別子を生成する方法、phpで識別子を生成する方法

この記事の例では、PHP で一意の識別子を生成する方法を説明します。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです

一意で非反復の識別子を生成するには、主に 現在時刻に従ってそれを md5 値に変換します。これにより、ラベルの一意性がほぼ保証されます 非反復識別子を生成するためのいくつかのプログラム コードの概要を以下に示します。 PHP での反復識別子に興味のある方はぜひご覧ください

PHP には、現在の時間のマイクロ秒数に基づいて一意の ID を生成する関数 uniqid() が付属しています。使用方法は次のとおりです。

コードをコピー コードは次のとおりです:echo uniqid() //13桁の文字列
; echo uniqid("php_"); //もちろんプレフィックスを追加することもできます
echo uniqid("php_", TRUE); // 2 番目のパラメータ more_entropy が true の場合、23 桁の文字列が生成されます

しかし、生成される識別子は一意ではない可能性があるため、多くの人は次のようになります:


コードをコピーします コードは次のとおりです: //これは最初の簡単な方法ですが、もちろん sha1() 関数を使用することもできます。
echo md5(uniqid());
// 2 番目の方法はタイムスタンプを使用することです
echo md5(time() . mt_rand(1,1000000));
?>

例:


コードをコピーします コードは次のとおりです: //一意の識別子を生成します
//sha1() 関数、「セキュア ハッシュ アルゴリズム (SHA1)」
関数 create_unique() {
$data = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']
.time() .rand();
sha1($data)を返します;
//return md5(time().$data);
// $data を返します;
}
?>

例は次のとおりです:


コードをコピーします コードは次のとおりです: $newhash = create_unique();
$newhash をエコーする
?>

正確にはこの目的を意図したものではないにもかかわらず、多くの人が md5() 関数を使用しているのを見かけます。


コードをコピーします
コードは次のとおりです:// 一意の文字列を生成します echo md5(time() . mt_rand(1,1000000));
実際には、これに使用することを目的とした uniqid() という名前の PHP 関数があります。 //一意の文字列を生成します
エコーuniqid();
/* プリント
4bd67c947233e
*/
// 別の一意の文字列を生成します
エコーuniqid();
/* プリント
4bd67c9472340
*/

文字列は一意ですが、最初の数文字は似ていることに気づくかもしれません。これは、結果として得られる文字列がサーバー時間に相対しているためです。

しかし実際には、新しく生成された各 ID がアルファベット順に並べられるため、並べ替えが非常に簡単になるため、フレンドリーな側面もあります。

重複の可能性を減らすために、プレフィックスを渡すか、2 番目のパラメータを渡して増やすことができます:

コードをコピーします

コードは次のとおりです:// プレフィックス付き echo uniqid('foo_'); /* プリント
foo_4bd67d6cd8b8f
*/
// より多くのエントロピーを使用して
echo uniqid('',true);
/* プリント
4bd67d6cd8b926.12135106
*/
// 両方
echo uniqid('bar_',true);
/* プリント
bar_4bd67da367b650.43684647
*/

この関数は md5() よりも短い文字列を生成し、スペースを節約します。

phpでグローバル一意識別子(GUID)を生成する方法

GUID は空間と時間において一意であり、同時に異なる場所で生成された異なる数値が異なることを保証します。 世界中の 2 台のコンピューターが重複した GUID 値を生成することはありません。 GUID が必要な場合、アルゴリズムによって完全に自動的に生成できるため、権限のある組織による管理は必要ありません。

GUID は固定長で比較的短いため、並べ替え、識別、および保管に最適です。




コードをコピーします

コードは次のとおりです: //php が GUID を生成します 関数 getGuid() {
$charid = strtoupper(md5(uniqid(mt_rand(), true)));
$hyphen = chr(45);// "-"
$uuid = substr($charid, 0, 8).$hyphen
.substr($charid, 8, 4).$ハイフン
.substr($charid,12, 4).$ハイフン
.substr($charid,16, 4).$ハイフン
.substr($charid,20,12);
$uuid を返す
}
?>

この記事が皆さんの PHP プログラミング設計に役立つことを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/915426.html技術記事 PHP で一意の識別子を生成する方法 PHP で一意の識別子を生成する方法 この記事では、PHP で一意の識別子を生成する方法について説明します。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです: 健康...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。