0

我应该如何用下划线替换点而不丢失文件扩展名?

$str = $_FILES['files']['name']; //file.name.word.jpg
$ext = end(explode('.', $str));
$filename = explode('.', $str);
//output file_name_word.jpg

ps:它需要在上传之前..如果用户上传一个带点的文件,它必须重命名并插入到数据库中

4

2 回答 2

4

用于pathinfo()提取文件名并 str_replace()删除其中的所有点。

$filename = pathinfo('/path/to/your/file');
echo str_replace('.', '_', $filename['filename']);
于 2013-07-17T01:13:20.233 回答
2
$str = "file.name.word.jpg";
$regex = "/(\.)(?=\S+\.)/";
echo preg_replace($regex, "_", $str);

简写

echo preg_replace("/(\.)(?=\S+\.)/", "_", "file.name.word.jpg");
于 2013-07-17T01:24:06.707 回答