视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php如何实现数字和字符串id互转
2020-11-02 18:02:05 责编:小采
文档


php数字和字符串id互转的实现方法:首先打开相应的PHP代码文件;然后通过“alphaID(90071992547409);”方式实现数字和字符串id互转即可。

推荐:《PHP视频教程》

PHP数字和字符串ID互转函数(类似优酷ID)

不知道你注意了没有,类似优酷、腾讯视频等其他视频链接似乎类似这样的

代码如下:

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

注意id_xxx那段,是不是看不懂了,但你无可否认这个就是id,这不国外的一位牛人早在09年就写了针对PHP/Python/Javascript/Java/SQL的生成方法,可见我现在是多么的落伍,下面我把代码贴出来,希望分享精神永存。

代码如下:

<?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 = "abcdefghijklmnopqrstuvwxyz01234567ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 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;
}

使用举例

代码如下:

<?php
alphaID(90071992547409);

执行结果将被返回“fE2XnNGpF”,我们可以把它认为是加密,进行反解密则

代码如下:

<?php
alphaID('fE2XnNGpF', true);

那么就转换成真实的数字“90071992547409”。方法还可以支持使用key进行加密,使得别人无法解得你真实的ID。

下载本文
显示全文
专题