$config['file_name'] = preg_replace('/(\.gif|\.jpg|\.png)/', '_thumb$1', $filename);
基本上我希望filename.jpg
成为filename_thumb.jpg
我不明白为什么但延期重复了两次。 (filename.jpg.jpg)。
编辑这确实有效,我的代码中还有其他问题。
答案 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)
也许最好在诸如pathinfo
和basename
之类的构建方法中使用PHP。
这样可以处理所有文件的孩子,包括没有扩展名的文件
$extension = pathinfo($filename, PATHINFO_EXTENSION);
$baseName = basename($filename, ".{$extension}");
$newName = "{$baseName}_thumb.{$extension}";