在PHP中组合三个变量


Combine three variables in PHP

我试图更改上载的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个变量的组合似乎是问题。什么好主意吗?

你的代码没有问题

因为我找不到任何东西,所以我决定自己试试代码,看看输出是什么

这是我使用的代码:

<?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;
$myfile = $cj . strval($random) . $myfile;

在这里的示例中,我正在检查文件是否存在(我能想到的唯一失败的事情)。空白屏幕是解析器错误(通常与语法有关)。我还缩短了代码:

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