Maison  >  Article  >  développement back-end  >  Comment convertir un identifiant numérique et un identifiant de chaîne en php

Comment convertir un identifiant numérique et un identifiant de chaîne en php

藏色散人
藏色散人original
2020-10-19 11:40:392397parcourir

Comment implémenter la conversion mutuelle entre les nombres php et les identifiants de chaîne : ouvrez d'abord le fichier de code PHP correspondant ; puis utilisez "alphaID(9007199254740989);" pour réaliser la conversion mutuelle entre les nombres et les identifiants de chaîne.

Comment convertir un identifiant numérique et un identifiant de chaîne en php

Recommandé : "Tutoriel vidéo PHP"

Fonction de conversion mutuelle du numéro PHP et de l'ID de chaîne (similaire à Youku ID)

Je ne sais pas si vous l'avez remarqué, mais d'autres liens vidéo comme Youku, Tencent Video, etc. semblent être similaires à celui-ci

Le code est le suivant suit :

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

Remarque Vous ne comprenez pas la partie id_xxx, mais vous ne pouvez pas nier qu'il s'agit de l'identifiant. Un expert étranger a écrit dès le début une méthode de génération pour PHP/Python/Javascript/Java/SQL. comme 2009. On voit que je suis tellement dépassé maintenant, je posterai le code ci-dessous, en espérant que l'esprit de partage durera pour toujours.

Le code est le suivant :

<?php
/** 
 * @author   Kevin van Zonneveld <kevin@vanzonneveld.net>
 * @author   Simon Franz
 * @author   Deadfish
 * @copyright 2008 Kevin van Zonneveld (http://kevin.vanzonneveld.net)
 * @license   http://www.opensource.org/licenses/bsd-license.php New BSD Licence
 * @version   SVN: Release: $Id: alphaID.inc.php 344 2009-06-10 17:43:59Z kevin $
 * @link   http://kevin.vanzonneveld.net/
 *
 * @param mixed   $in      String or long input to translate
 * @param boolean $to_num  Reverses translation when true
 * @param mixed   $pad_up  Number or boolean padds the result up to a specified length
 * @param string  $passKey Supplying a password makes it harder to calculate the original ID
 *
 * @return mixed string or long
 */
function alphaID($in, $to_num = false, $pad_up = false, $passKey = null)
{
  $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  if ($passKey !== null) {
      // Although this function&#39;s purpose is to just make the
      // ID short - and not so much secure,
      // with this patch by Simon Franz (http://blog.snaky.org/)
      // you can optionally supply a password to make it harder
      // to calculate the corresponding numeric ID
 
      for ($n = 0; $n<strlen($index); $n++) {
          $i[] = substr( $index,$n ,1);
      }
 
      $passhash = hash(&#39;sha256&#39;,$passKey);
      $passhash = (strlen($passhash) < strlen($index))
          ? hash(&#39;sha512&#39;,$passKey)
          : $passhash;
 
      for ($n=0; $n < strlen($index); $n++) {
          $p[] =  substr($passhash, $n ,1);
      }
 
      array_multisort($p,  SORT_DESC, $i);
      $index = implode($i);
  }
 
  $base  = strlen($index);
 
  if ($to_num) {
      // Digital number  < 0) {
              $out -= pow($base, $pad_up);
          }
      }
      $out = sprintf(&#39;%F&#39;, $out);
      $out = substr($out, 0, strpos($out, &#39;.&#39;));
  } else {
      // Digital number  -->>  alphabet letter code
      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); // reverse
  }
 
  return $out;
}

Exemple d'utilisation

Le code est le suivant :

<?php
alphaID(9007199254740989);

Le résultat de l'exécution sera renvoyé "fE2XnNGpF", on peut le considérer comme du cryptage, pour l'antidécryptage, le

code est le suivant :

<?php
alphaID(&#39;fE2XnNGpF&#39;, true);

Ensuite il est converti en un nombre réel "9007199254740989". La méthode peut également prendre en charge le cryptage à l’aide d’une clé afin que d’autres ne puissent pas déchiffrer votre véritable identifiant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn