ホームページ  >  記事  >  バックエンド開発  >  PHP数値と文字列IDの相互変換機能(Youku IDと同様)_PHPチュートリアル

PHP数値と文字列IDの相互変換機能(Youku IDと同様)_PHPチュートリアル

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

お気づきかどうかはわかりませんが、Youku、Tencent Video などの他の動画リンクもこれに似ているようです

コードをコピーします コードは次のとおりです:

http://v.youku.com/v_show/id_XNjA5MjE5OTM2.html

id_xxx の部分に注目してください。理解できないかもしれませんが、これが ID であることは否定できません。2009 年には、外国の専門家が PHP/Python/Javascript/Java/SQL の生成メソッドを作成しました。私が時代遅れであることがわかると思いますが、共有の精神が永遠に続くことを願って、以下のコードを投稿します。

コードをコピーします コードは次のとおりです:

/** 
 * @author Kevin van Zonneveld
 * @author Simon Franz
 * @author デッドフィッシュ
 * @copyright 2008 Kevin van Zonneveld (http://kevin.vanzonneveld.net)
 * @license http://www.opensource.org/licenses/bsd-license.php 新しい BSD ライセンス
 * @version SVN: リリース: $Id: alphaID.inc.php 344 2009-06-10 17:43:59Z kevin $
 * @link http://kevin.vanzonneveld.net/
 *
 * @param 混合 $in 翻訳する文字列または長い入力
 * @param boolean $to_num true の場合は逆変換します
 * @parammixed $pad_up 数値またはブール値は、指定された長さまで結果をパディングします
 * @param string $passKey パスワードを指定すると、元の ID の計算が難しくなります
 *
 * @return 混合文字列または長い
 */
関数 alphaID($in, $to_num = false, $pad_up = false, $passKey = null)
{
  $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  if ($passKey !== null) {
      // この関数の目的は
を作成することだけですが、       // ID が短い - あまり安全ではありません
      // Simon Franz によるこのパッチ (http://blog.snaky.org/)
      // オプションでパスワードを指定して、パスワードを難しくすることもできます
      // 対応する数値 ID を計算します
 
      for ($n = 0; $n           $i[] = substr( $index,$n ,1);
      }
 
      $passhash = ハッシュ('sha256',$passKey);
      $passhash = (strlen($passhash) < strlen($index))
          ?ハッシュ('sha512',$passKey)
          : $パスハッシュ;
 
      for ($n=0; $n           $p[] = substr($passhash, $n ,1);
      }
 
      array_multisort($p, SORT_DESC, $i);
      $index = 爆破($i);
  }
 
  $base = strlen($index);
 
  if ($to_num) {
      // デジタル番号 < 0){
              $out -= pow($base, $pad_up);
          }
      }
      $out = sprintf('%F', $out);
      $out = substr($out, 0, strpos($out, '.'));
  } その他 {
      // デジタル番号 -->>  アルファベット文字コード
      if (is_numeric($pad_up)) {
          $pad_up--;
          if ($pad_up > 0) {
              $in += pow($base, $pad_up);
          }
      }
 
      $out = "";
      for ($t = Floor(log($in, $base)); $t >= 0; $t--) {
          $bcp = bcpow($base, $t);
          $a = Floor($in / $bcp) % $base;
          $out = $out 。 substr($index, $a, 1);
          $in = $in - ($a * $bcp);
      }
      $out = strrev($out); // 逆
  }
 
  $out を返します;
}

使用例

复制代码代码如下:
アルファID(9007199254740989);

実行結果は「fE2XnNGpF」が返されます。これを暗号化と考えて、復号化は
となります。
コードをコピーします コードは次のとおりです:
alphaID('fE2XnNGpF', true);

次に、それを実数「9007199254740989」に変換します。この方法では、他人があなたの本当の ID を解読できないように、キーを使用した暗号化もサポートされています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/824744.html技術記事お気づきかどうかはわかりませんが、Youku、Tencent Video などの他のビデオ リンクでは、次のコードがコピーされているようです: http://v.youku.com/v_show/id_XNjA5MjE5OTM2.html 注...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。