Home > Backend Development > PHP Tutorial > PHP number and string ID mutual conversion function (similar to Youku ID)_PHP tutorial

PHP number and string ID mutual conversion function (similar to Youku ID)_PHP tutorial

WBOY
Release: 2016-07-13 10:26:17
Original
1362 people have browsed it

I don’t know if you’ve noticed, but other video links like Youku, Tencent Video, etc. seem to be similar to this

Copy code The code is as follows:

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

Pay attention to the id_xxx part. You can’t understand it, 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 am so behind the times now, I will post the code below, hoping that the spirit of sharing will last forever.

Copy code The code is as follows:

/** 
 * @author   Kevin van Zonneveld
 * @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'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           $i[] = substr( $index,$n ,1);
      }
 
      $passhash = hash('sha256',$passKey);
      $passhash = (strlen($passhash) < strlen($index))
          ? hash('sha512',$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('%F', $out);
      $out = substr($out, 0, strpos($out, '.'));
  } 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;
}

使用举例

复制代码 代码如下:
alphaID(9007199254740989);

The execution result will be returned "fE2XnNGpF", we can think of it as encryption, and decryption is
Copy code The code is as follows:
alphaID('fE2XnNGpF', true);

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

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/824744.htmlTechArticleI don’t know if you have noticed, but other video links such as Youku and Tencent Video seem to be similar to this. The copy code is as follows : http://v.youku.com/v_show/id_XNjA5MjE5OTM2.html Note...
Related labels:
php
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template