我有一个可以上传图片的网站。它工作得很好,但上传的图像名称太长了 - “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;
,但我不明白如何改变它以获得我想要的结果。 谢谢你的帮助
答案 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;