Home >Backend Development >PHP Problem >How to convert numeric and string id to each other in php

How to convert numeric and string id to each other in php

藏色散人
藏色散人Original
2020-10-19 11:40:392430browse

How to realize the mutual conversion between numbers and string IDs in php: first open the corresponding PHP code file; then use the "alphaID(9007199254740989);" method to realize the mutual conversion between numbers and string IDs.

How to convert numeric and string id to each other in php

Recommended: "PHP Video Tutorial"

PHP number and string ID mutual conversion function ( Similar to Youku ID)

I don’t know if you have noticed, but other video links such as Youku and Tencent Video seem to be similar to this

The code is as follows:

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

Attention Don’t you understand the id_xxx part, but you can’t deny that this is the id. A foreign expert wrote a generation method for PHP/Python/Javascript/Java/SQL as early as 2009. It can be seen that I It is so outdated now, I will post the code below, hoping that the spirit of sharing will last forever.

The code is as follows:

<?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;
}

Usage example

The code is as follows:

<?php
alphaID(9007199254740989);

The execution result will be returned as "fE2XnNGpF", we can think of it as encryption , the code for anti-decryption is as follows:

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

Then it is converted into a real number "9007199254740989". The method can also support encryption using key so that others cannot decipher your real ID.

The above is the detailed content of How to convert numeric and string id to each other in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn