2014-02-25 74 views
0

我有一個網站,您可以上傳圖片。它工作的很好,但上傳的圖像名稱太長 - 「swag_526abccf5e2bcd27d2000e3f9.jpg」 我想將它們縮短到「swag_」部分後的大約8個字符。更改上傳的圖像名稱中的字符數量? substr

function SaveUploadFile($file, $dir, $resize=TRUE, $maxw=0, $maxh=0, $quality=75) 
{ 
    if(!$GLOBALS['image_verification']) $resize = FALSE; 

    if ($file['tmp_name']) 
    { 
     $dotpos = strrpos($file['name'], "."); 

     if ($dotpos) $ext = strtolower(substr($file['name'], $dotpos)); 
     else $ext = ""; 

     $newname = uniqid("swag_") . substr(md5($file['name']), 5, 12) . $ext; 

     if ($resize && ($ext==".jpg" || $ext==".jpeg" || $ext==".jfif")) $copysuccess = SaveResizedJPG($file['tmp_name'], "$dir/$newname", $maxw, $maxh, $quality); 
     else $copysuccess = copy($file['tmp_name'], "$dir/$newname"); 

     if ($copysuccess) 
      $ret = $newname; 
     else 
      return ""; 

     unlink($file['tmp_name']); 
     return $ret; 
    } 
    else 
    { 
     return ""; 
    } 

我認爲它與新名稱後的數字5和12有關?

$newname = uniqid("swag_") . substr(md5($file['name']), 5, 12) . $ext; 

,但我不明白如何改變這個來獲得我想要的結果。 感謝您的幫助

回答

1
substr(md5($file['name']), 5, 12) 

這意味着,計算$文件[「名」],然後從字符5開始的MD5校驗,採取下一個12個字符,並把它們作爲一個文件名。

如果您想更改圖片名稱中使用的字符數量,只需使用這些數字即可。從降低12開始,也許到8這樣的:

substr(md5($file['name']), 5, 8) 

甚至更​​少,嘗試一下,否則你怎麼去了解這些東西:-) 這應該助陣,以及:

http://www.php.net/manual/en/function.substr.php

編輯: 好吧,我剛剛看到您正在使用uniqid。你可以完全刪除MD5的一部分,如果你只想8個字:

$newname = substr(uniqid("swag_"), 0, 13) . $ext; 
+0

謝謝你,我只是檢查出來,學到了一點關於MD5和uniqid,它現在正在一點點更有意義,但還有更多的是學到了 ;) – user2905791