-1

我正在尝试更改上传的 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 个变量的组合似乎是问题所在。有任何想法吗?

4

3 回答 3

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

基本上,它运行良好。没有什么是错的。

演示:这里

由于我们无法找出问题所在以及您的代码无法正常工作的原因,我们将尝试不同的方法

$random = mt_rand(22,32);
$cj = 'cj-';
$final_file_name = $cj;
$final_file_name .= $random;
$final_file_name .= $myfile;
于 2013-06-15T05:42:12.463 回答
0
$myfile = $cj . strval($random) . $myfile;
于 2013-06-15T05:32:03.393 回答
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.";
}
于 2013-06-15T07:35:24.987 回答