更改上传图片名称中的字符数量? SUBSTR

时间:2014-02-25 16:03:45

标签: php filenames substr

我有一个可以上传图片的网站。它工作得很好,但上传的图像名称太长了 - “swag_526abccf5e2bcd27d2000e3f9.jpg” 我想在“swag_”部分之后将它们缩短到大约8个字符。

   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 "";
    }

我认为它与newname之后的数字5和12有关吗?

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

,但我不明白如何改变它以获得我想要的结果。 谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

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

这意味着,计算$ file ['name']的md5总和,然后从字符5开始,接下来的12个字符并将它们用作文件名。

如果您想更改图像名称中使用的字符数量,只需使用这些数字即可。从降低12开始,也许是这样的8:

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

也许更少,尝试一下,否则你将如何学习这些东西:-) 这也应该有所帮助:

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

编辑: 好吧,我刚刚看到你正在使用uniqid。如果你只需要8个字符,你可以完全删除那个md5部分:

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