Home >Backend Development >PHP Problem >How to convert numeric and string id to each other in php
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.
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'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('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; }
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('fE2XnNGpF', 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!