我试图更改上传的jpg的文件名,然后根据以下内容重命名,但它不起作用。
$myfile = ( $_FILES['image']['name']);
$myfile = str_replace("'", '', $myfile);
$myfile = str_replace('&', '', $myfile);
$myfile = str_replace('%', '', $myfile);
$myfile = str_replace('!', '', $myfile);
$myfile = str_replace('#', '', $myfile);
$myfile = str_replace(' ', '', $myfile);
$random = mt_rand(22, 32);
$cj = "cj-";
$myfile = $cj . $random . $myfile;
如果我注释掉它的最后一行,那么3个变量的组合似乎是问题所在。有什么想法吗?
答案 0 :(得分:1)
您的代码没有问题
由于我找不到任何东西,我决定自己尝试代码,看看输出是什么
这是我使用的代码:
<?php
$myfile = "#'&!# Some_file";
$myfile = str_replace("'", '', $myfile);
$myfile = str_replace('&', '', $myfile);
$myfile = str_replace('%', '', $myfile);
$myfile = str_replace('!', '', $myfile);
$myfile = str_replace('#', '', $myfile);
$myfile = str_replace(' ', '', $myfile);
$random = mt_rand(22, 32);
$cj = "cj-";
$final_file_name = $cj . $random . $myfile;
echo 'Random: '.$random."\n";
echo 'Cj: '.$cj."\n";
echo 'MyFile: '.$myfile."\n";
echo 'Final name: '.$final_file_name."\n";
?>
输出:
Random: 25
Cj: cj-
MyFile: Some_file
Final name: cj-25Some_file
基本上,它工作得很好。没有错。
演示:Here
由于我们无法找出问题所在以及为什么您的代码无效,我们会尝试不同的应用
$random = mt_rand(22,32);
$cj = 'cj-';
$final_file_name = $cj;
$final_file_name .= $random;
$final_file_name .= $myfile;
答案 1 :(得分:0)
$myfile = $cj . strval($random) . $myfile;
答案 2 :(得分:0)
在我的例子中,我正在检查文件是否存在(我唯一能想到的是失败)。空白屏幕是解析器错误(通常与语法相关)。我也缩短了代码:
if(!empty($_FILES['image']['name'])){
$myfile = $_FILES['image']['name'];
$patterns = array("'","&","%","!","#"," ");
$myfile = "cj-".mt_rand(22, 32).str_replace($patterns, '', $myfile);
echo $myfile;
} else {
echo "Empty Filename.";
}