6种php上传图片重命名的秘籍实例

UUID是指在一台机器上生成的数字,按照开放软件基金会(OSF)制定的标准计算,无法用于给上传的图片重命名,给上传图片重命名,无法用于给上传的图片重命名,给上传图片重命名,UUID是指在一台机器上生成的数字,(UUID的第一个部分与时间有关

 

输出
8b1a9953c4611296a827abf8c47804d7
亮点:能够依据输入的种子数据来支配输出的数值,倘若种子数据是规律性不另行的,通过md5能够对数码实行维护,产生一点都不小的歪曲成效。
劣势:32人字符过长;需提供不另行的种子数据;
用法:高并发,以秒为种子数据,依然会油不过生重复现象。

/*
* 参数 suffix_len钦点 生成的 ID 值附扩大少位随机数,暗许值为 3。
* 谢谢“伊凡 Tan|谭俊青 DrinChing (at) Gmail.com”提供的算法。
* @param int suffix_len
* @return string
*/
function fast_uuid($suffix_len=3){
        //! 总括种子数的发端时间
        $being_timestamp = strtotime(‘2013-3-21’);

UUID是指在一台机械上扭转的数字,它保证对在同不经常空中的全部机器都以举世无双的。通常平台会提供生成UUID的API。UUID依据开放软件基金会(OSF)制订的职业测算,用到了以太网卡地址、飞秒级时间、芯片ID码和相当多大概的数字。由以下几局部的结缘:当前日期和岁月(UUID的率先个部分与时间关于,假诺您在风云变幻三个UUID之后,过几秒又变卦三个UUID,则率先个部分分化,别的一律),挂钟系列,全局独一的IEEE机器度和胆识别号(假使有网卡,从网卡获得,未有网卡以另外措施得到),UUID的举世无双劣点在于调换的结果串会比较长。关于UUID这些专门的学问应用最常见的是微软的GUID(Globals
Unique Identifiers)。
在ColdFusion中能够用CreateUUID()函数很简单的生成UUID,其格式为:xxxxxxxx-xxxx-xxxx-
xxxxxxxxxxxxxxxx(8-4-4-16),在那之中各样 x 是 0-9 或 a-f
范围内的三个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx
(8-4-4-4-12)

function create_guid_section($characters){ 
    $return = “”; 
    for($i=0; $i<$characters; $i++) 
    { 
        $return .= dechex(mt_rand(0,15)); 
    } 
    return $return; 

复制代码 代码如下:

View Code

 代码如下

function ensure_length(&$string, $length){    
    $strlen = strlen($string);    
    if($strlen < $length)    
    {    
        $string = str_pad($string,$length,”0″);    
    }    
    else if($strlen > $length)    
    {    
        $string = substr($string, 0, $length);    
    }   
 } 

/*
* 参数 suffix_len钦赐 生成的 ID 值附增加少位随机数,暗中同意值为 3。
* 谢谢“Ivan Tan|谭俊青 DrinChing (at) Gmail.com”提供的算法。
* @param int suffix_len
* @return string
*/
function fast_uuid($suffix_len=3){
    //! 总结种子数的发端时间
    $being_timestamp = strtotime(‘2013-3-21’);

优点:差相当少不会再次;
劣势:对于给上传的图形重命名,依然过长了。
用法:

<?php
function guid(){
    if (function_exists(‘com_create_guid’)){
        return com_create_guid();
    }else{
        mt_srand((double)microtime()*10000);
//optional for php 4.2.0 and up.
        $charid = strtoupper(md5(uniqid(rand(), true)));
        $hyphen = chr(45);
// “-“
        $uuid = chr(123)
// “{“
               
.substr($charid, 0,
8).$hyphen
                .substr($charid, 8, 4).$hyphen
                .substr($charid,12, 4).$hyphen
                .substr($charid,16, 4).$hyphen
                .substr($charid,20,12)
                .chr(125);
// “}”
        return $uuid;
    }
}
?>

UUID含义是 通用独一识别码 (Universally Unique Identifier),这是叁个软件建设构造的正统,也是被开源软件基金会 (Open Software Foundation,
OSF) 的组织利用在布满式统计景况 (Distributed Computing Environment, DCE)
领域的一有个别。
UUID
的目标,是让遍及式系统中的全体因素,都能有独一的鉴定区别资源音信,而无需经过大旨决定端来做辨识资讯的钦点。如此一来,各种人都得以创建不与其余人争执的
UUID。在如此的景况下,就不需思考数据库建马上的名称再一次难点。近期最分布应用的
UUID,就是微软的 Microsoft’s Globally Unique Identifiers
(GUIDs),而另外重要的利用,则有 Linux ext2/ext3 档案系统、LUKS
加密分割区、GNOME、KDE、Mac OS X 等等。
UUID是指在一台机械上生成的数字,它保险对在一样有时候空中的全体机器都以独一的。经常平台会提供生成的API。遵照开放软件基金会(OSF)制订的业开放式测验算,用到了以太网卡地址、微秒级时间、芯片ID码和十分多只怕的数字 
UUID由以下几有的的重组: 
(1)当前些天子和岁月,UUID的首先个部分与时间关于,如若您在转换贰个UUID之后,过几秒又变卦三个UUID,则率先个部分区别,别的一律。 
(2)石英钟种类。 
(3)全局独一的IEEE机器度和胆识别号,如若有网卡,从网卡MAC地址得到,未有网卡以别的措施获得。 
UUID的无与伦比短处在于转换的结果串会相比长。关于UUID这些专门的学业应用最广大的是微软的GUID(Globals
Unique
Identifiers)。在ColdFusion中能够用CreateUUID()函数很简短地生成UUID,其格式为:xxxxxxxx-xxxx-
xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),个中每一种 x 是 0-9 或 a-f
范围内的一个十六进制的数字。 
而 规范的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
(8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行改换。
首先种,PHP代码如下:

$a=idate(“U”);
echo “\r\n<br />e:” . hex10to64($a);
echo “\r\n<br />e:” . hex64to10(hex10to64($a));

4,测验结果
算法1:0.1687250137329
算法2:0.044965028762817
5,结论:算法1就算效能上差那么一点,但是能够把md5生成的16进制转化为64进制,能够选取在必须选取md5的景况下裁减字符串。

echo create_guid();

    return $result;
}

    /**
     * 功用和PHP原生函数str_split临近,只是从后面部分开端计数切割
     * @param $str string 供给切割的字符串
     * @param $len integer 每段字符串的长短
     * @return array
     * @author 野马
     */
    function str_rsplit($str, $len = 1) {
        if($str == null || $str == false || $str == ”) return false;
        $strlen = strlen($str);
        if($strlen <= $len) return array($str);
        $headlen = $strlen % $len;
        if($headlen == 0) {
            return str_split($str, $len);
        }
        $return = array(substr($str, 0, $headlen));
        return array_merge($return, str_split(substr($str, $headlen),
$len));
    }

其次种,PHP代码如下:

$a=idate(“U”);
var_dump(dec2s4($a));
var_dump(s42dec(dec2s4($a)));

复制代码 代码如下:

 代码如下

$strarr = array();
$time1 = microtime(true);
for($i = 0; $i < 10000; ++$i) {
     $str = idate(“U”)+$i;
     $strarr[] = “{$i}->$str\r\n<br>”;
 }
 $time2 = microtime(true);
 $time3 = $time2 – $time1;

输出结果为:

 代码如下

测量试验结果
算法1:0.1687250137329
算法2:0.044965028762817
敲定:算法1就算效用上差点,不过能够把md5生成的16进制转化为64进制,能够利用在必得采纳md5的条件下减弱字符串。
六、总结 正文涉及了上传图片重命名能够能运用的二种艺术,当中关键点是运用10进制调换为64进制来张开字符串的回降。
例如,使用fast_uuid生成的二十一人数字,转变为64进制独有7位字符;
切切实实使用,能够根据本人景况灵活应用,希望对我们具备支持。

参考文献:

function create_guid(){ 
    $microTime = microtime(); 
金沙澳门官网7817网址,    list($a_dec, $a_sec) = explode(” “, $microTime); 
    $dec_hex = dechex($a_dec* 1000000); 
    $sec_hex = dechex($a_sec); 
    ensure_length($dec_hex, 5); 
    ensure_length($sec_hex, 6); 
    $guid = “”; 
    $guid .= $dec_hex; 
    $guid .= create_guid_section(3); 
    $guid .= ‘-‘; 
    $guid .= create_guid_section(4); 
    $guid .= ‘-‘; 
    $guid .= create_guid_section(4); 
    $guid .= ‘-‘; 
    $guid .= create_guid_section(4); 
    $guid .= ‘-‘; 
    $guid .= $sec_hex; 
    $guid .= create_guid_section(6); 
    return $guid; 

复制代码 代码如下:

    /**
     * 将64进制的数字字符串转为10进制的数字字符串
     * @param $m string 64进制的数字字符串
     * @param $len integer
再次回到字符串长度,即便长度非常不足用0填充,0为不填充
     * @return string
     * @author 野马
     */
    function hex64to10($m, $len = 0) {
        $m = (string)$m;
        $hex2 = ”;
        $Code = KeyCode;
        for($i = 0, $l = strlen($Code); $i < $l; $i++) {
            $KeyCode[] = $Code[$i];
        }
        $KeyCode = array_flip($KeyCode);

function create_uuid($prefix = “”){    //能够钦赐前缀
    $str = md5(uniqid(mt_rand(), true));   
    $uuid  = substr($str,0,8) . ‘-‘;   
    $uuid .= substr($str,8,4) . ‘-‘;   
    $uuid .= substr($str,12,4) . ‘-‘;   
    $uuid .= substr($str,16,4) . ‘-‘;   
    $uuid .= substr($str,20,12);   
    return $prefix . $uuid;
}
echo create_uuid();

<?php
/*
*构成time()函数使用,以一九七零年到近年来时刻的秒数作为种子数。
*/
$str=time();
echo md5($str);
?>

复制代码 代码如下:

    /**
     * 将10进制的数字字符串转为64进制的数字字符串
     * @param $m string 10进制的数字字符串
     * @param $len integer
再次回到字符串长度,假设长度缺乏用0填充,0为不填充
     * @return string
     * @author 野马
     */
    function hex10to64($m, $len = 0) {
        $KeyCode = KeyCode;
        $hex2 = decbin($m);
        $hex2 = str_rsplit($hex2, 6);
        $hex64 = array();
        foreach($hex2 as $one) {
            $t = bindec($one);
            $hex64[] = $KeyCode[$t];
        }
        $return = preg_replace(‘/^0*/’, ”, implode(”, $hex64));
        if($len) {
            $clen = strlen($return);
            if($clen >= $len) {
                return $return;
            }
            else {
                return str_pad($return, $len, ‘0’, STR_PAD_LEFT);
            }
        }
        return $return;
    }

复制代码 代码如下:

复制代码 代码如下:

<?php
/*
*重组time()函数使用,以1967年到当下时刻的秒数作为种子数。
*/
$str=time();
echo md5($str);
?>

复制代码 代码如下:

function  s42dec($sixty_four) { 
    $base_map = array ( ‘0’ => 0,    ‘1’ => 1,    ‘2’ => 2,   
‘3’ => 3,    ‘4’ => 4,    ‘5’ => 5,    ‘6’ => 6,    ‘7’
=> 7,    ‘8’ => 8,    ‘9’ => 9,    ‘_’ => 10,    ‘$’ =>
11,    ‘a’ => 12,    ‘b’ => 13,    ‘c’ => 14,    ‘d’ =>
15,    ‘e’ => 16,    ‘f’ => 17,    ‘g’ => 18,    ‘h’ =>
19,    ‘i’ => 20,    ‘j’ => 21,    ‘k’ => 22,    ‘l’ =>
23,    ‘m’ => 24,    ‘n’ => 25,    ‘o’ => 26,    ‘p’ =>
27,    ‘q’ => 28,    ‘r’ => 29,    ‘s’ => 30,    ‘t’ =>
31,    ‘u’ => 32,    ‘v’ => 33,    ‘w’ => 34,    ‘x’ =>
35,    ‘y’ => 36,    ‘z’ => 37,    ‘A’ => 38,    ‘B’ =>
39,    ‘C’ => 40,    ‘D’ => 41,    ‘E’ => 42,    ‘F’ =>
43,    ‘G’ => 44,    ‘H’ => 45,    ‘I’ => 46,    ‘J’ =>
47,    ‘K’ => 48,    ‘L’ => 49,    ‘M’ => 50,    ‘N’ =>
51,    ‘O’ => 52,    ‘P’ => 53,    ‘Q’ => 54,    ‘R’ =>
55,    ‘S’ => 56,    ‘T’ => 57,    ‘U’ => 58,    ‘V’ =>
59,    ‘W’ => 60,    ‘X’ => 61,    ‘Y’ => 62,    ‘Z’ => 63, 
); 
    $result = 0; 
    $len = strlen($sixty_four); 

算法效能测验:

您可能感兴趣的稿子:

  • PHP自动重命名文件贯彻方式
  • php
    随机数的发生、页面跳转、件读写、文件重命名、switch语句
  • fckeditor
    php上传文件重命名的装置
  • 6种php上传图片重命名的不二秘诀实例
  • PHP批量修改文件名称的方法深入分析
  • php完成批量修改文件名称的点子
  • PHP完成批量更动文件后缀名的诀要
  • php达成公文编码批量转变
  • php中批量退换文件后缀名的函数代码
  • php中批量交替文件名的贯彻代码
  • PHP达成批量重命名有个别文件夹下全体文件的主意

<?php
function random($length) {
    $hash = ”;
    $chars =
‘ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz’;
    $max = strlen($chars) – 1;
    PHP_VERSION < ‘4.2.0’ && mt_srand((double)microtime() *
1000000);
    for($i = 0; $i < $length; $i++) {
        $hash .= $chars[mt_rand(0, $max)];
    }
    return $hash;
}
function random2($length, $numeric = 0) {
    PHP_VERSION < ‘4.2.0’ ? mt_srand((double)microtime() *
1000000) : mt_srand();
    $seed = base_convert(md5(print_r($_SERVER, 1).microtime()), 16,
$numeric ? 10 : 35);
    $seed = $numeric ? (str_replace(‘0′, ”, $seed).’012340567890′) :
($seed.’zZ’.strtoupper($seed));
    $hash = ”;
    $max = strlen($seed) – 1;
    for($i = 0; $i < $length; $i++) {
        $hash .= $seed[mt_rand(0, $max)];
    }
    return $hash;
}
?>

输出,

输出,
29832412631099013
2,time()+随机数:
上例中一度面世了随机数的应用,是为了消除一秒下发生的累累呼吁。提供五个函数如下,

一,适用场景:不可能运用从数据库中回到的自增进数字,给上传图片重命名。

您或然感兴趣的作品:

  • PHP自动重命名文件贯彻格局
  • php
    随机数的发出、页面跳转、件读写、文件重命名、switch语句
  • fckeditor
    php上传文件重命名的设置
  • 遵照php上传图片重命名的6种缓和方法的详尽介绍
  • PHP批量修改文件名称的艺术分析
  • php实现批量更换文件名称的格局
  • PHP达成批量退换文件后缀名的办法
  • php达成文件编码批量调换
  • php中批量修改文件后缀名的函数代码
  • php中批量沟通文件名的落到实处代码
  • PHP实现批量重命名某些文件夹下全体文件的法子

复制代码 代码如下:

function  s42dec($sixty_four) {
    $base_map = array ( ‘0’ => 0,    ‘1’ => 1,    ‘2’ => 2,   
‘3’ => 3,    ‘4’ => 4,    ‘5’ => 5,    ‘6’ => 6,    ‘7’
=> 7,    ‘8’ => 8,    ‘9’ => 9,    ‘_’ => 10,    ‘$’ =>
11,    ‘a’ => 12,    ‘b’ => 13,    ‘c’ => 14,    ‘d’ =>
15,    ‘e’ => 16,    ‘f’ => 17,    ‘g’ => 18,    ‘h’ =>
19,    ‘i’ => 20,    ‘j’ => 21,    ‘k’ => 22,    ‘l’ =>
23,    ‘m’ => 24,    ‘n’ => 25,    ‘o’ => 26,    ‘p’ =>
27,    ‘q’ => 28,    ‘r’ => 29,    ‘s’ => 30,    ‘t’ =>
31,    ‘u’ => 32,    ‘v’ => 33,    ‘w’ => 34,    ‘x’ =>
35,    ‘y’ => 36,    ‘z’ => 37,    ‘A’ => 38,    ‘B’ =>
39,    ‘C’ => 40,    ‘D’ => 41,    ‘E’ => 42,    ‘F’ =>
43,    ‘G’ => 44,    ‘H’ => 45,    ‘I’ => 46,    ‘J’ =>
47,    ‘K’ => 48,    ‘L’ => 49,    ‘M’ => 50,    ‘N’ =>
51,    ‘O’ => 52,    ‘P’ => 53,    ‘Q’ => 54,    ‘R’ =>
55,    ‘S’ => 56,    ‘T’ => 57,    ‘U’ => 58,    ‘V’ =>
59,    ‘W’ => 60,    ‘X’ => 61,    ‘Y’ => 62,    ‘Z’ => 63, 
);
    $result = 0;
    $len = strlen($sixty_four);

string(13) “51734aa562254” string(14) “a51734aa562257”