将后缀添加到文件名

时间:2010-08-04 05:30:00

标签: php regex

$config['file_name'] = preg_replace('/(\.gif|\.jpg|\.png)/', '_thumb$1', $filename);

基本上我希望filename.jpg成为filename_thumb.jpg

我不明白为什么但延期重复了两次。 (filename.jpg.jpg)。

编辑这确实有效,我的代码中还有其他问题。

3 个答案:

答案 0 :(得分:10)

最好的方法可能是......

$filename_ext = pathinfo($filename, PATHINFO_EXTENSION);

$filename = preg_replace('/^(.*)\.' . $filename_ext . '$/', '$1_thumb.' . $filename_ext, $filename);

我justed测试了它,$filename = 'path/to/something.jpg';,输出为path/to/something_thumb.jpg

我说最好的方式因为通常使用PHP的内置函数更好。这也允许PHP可以处理的所有文件扩展名(字符串拆分,它应该是全部)。

答案 1 :(得分:5)

应该工作。

echo preg_replace('/(\.gif|\.jpg|\.png)/', '_thumb$1', "filename.jpg");

给出filename_thumb.jpg

在任何情况下,请使用表达式'/(\.gif|\.jpg|\.png)$/'(更好的是,不要使用括号并将$ 1替换为$ 0),以便它只匹配字符串,如果它在最后。

答案 2 :(得分:0)

也许最好在诸如pathinfobasename之类的构建方法中使用PHP。 这样可以处理所有文件的孩子,包括没有扩展名的文件

$extension = pathinfo($filename, PATHINFO_EXTENSION);
$baseName = basename($filename, ".{$extension}");
$newName = "{$baseName}_thumb.{$extension}";