这里我将文件名称设为$fileName
我想将文件名存储为
filename_randomnumber.extension
如果文件名是file.jpg那么它将是file_randomnumber.jpg
如果文件名是test.png,那么它将是test_randomnumber.png
我使用以下代码
$digits = 6;
$digits = rand(pow(10, $digits-1), pow(10, $digits)-1);
$val = $digits.'_.';
$gen_path = preg_replace("([.]+)", $val, $fileName); //replacing . with _randomnumber.
我只是替换了。随机数和_
但威胁是
如果文件名有
test.image.png
然后该值将为test_randomnumber.image_randomnumber.png
我需要的是我需要更换最合适的。在文件名中找到。
结果将是test.image_randomumber.png
我该怎么做
答案 0 :(得分:2)
您可以使用pathinfo()
和sprintf()
:
function getRandomFileName($fileName)
{
$info = pathinfo($fileName);
$digits = 6;
$digits = rand(pow(10, $digits-1), pow(10, $digits)-1);
if (isset($info['extension'])) {
return sprintf('%s_%s.%s', $info['filename'], $digits, $info['extension']);
} else {
return sprintf('%s_%s', $info['filename'], $digits);
}
}
echo getRandomFileName('test.jpg'); // test_838135.jpg
答案 1 :(得分:1)
我有一个小小的解决方法,可以满足您的需求。
最后爆炸后首先爆炸。 '时段'
$fileName = implode('.', explode('.', $string, -1));
其次在$fileName
$ext = substr($string, strrpos($string, '.') + 1);
在Mid中你的$val
将被连载
因此,您的代码必须
<?php
$fileName = 'b.a.png';
$string = $fileName;
$fileName = implode('.', explode('.', $string, -1));
$ext = substr($string, strrpos($string, '.') + 1);
$digits = 6;
$digits = rand(pow(10, $digits-1), pow(10, $digits)-1);
$val = $digits.'_.';
echo $fileName.$val.$ext;
答案 2 :(得分:0)
试试这个:
$genpath=substr_replace($fileName,"_".$digits,strrpos($fileName,"."),0);
strrpos
获取"."
中$fileName
的最后位置。substr_replace
将带有下划线的随机数插入点前的$fileName
。假设文件名中已有一个点。