如何在php中增加文件名后缀

时间:2012-06-18 09:38:15

标签: php regex

我对正则表达式的理解以及在php中处理字符串的情况充其量很少,所以如果这对大多数人来说这是一个简单的问题我很抱歉。如果我说实话,我所做的搜索让我更加困惑,希望有人能给我一个明确的答案。

我只需要在PHP中增加文件名的后缀。

文件名如下所示:

13132432343243432434234_1.jpg

我希望保持原样的文件名,但用“_2”,“_ 3”,“_ 4”等替换最终的“_1”部分。

无需检查文件是否存在,这需要简单的字符串操作。如果后缀为_1,则将其替换为_2,如果后缀为_4,则将其替换为_5等。

提前致谢。

3 个答案:

答案 0 :(得分:5)

这些方面应该做的事情:

echo preg_replace_callback('/(?<=_)\d+(?=\.)/',
                           function ($m) { return ++$m[0]; },
                           '13132432343243432434234_1.jpg');

正则表达式匹配&#34;任何以_开头且后跟.&#34; 的数字,回调返回此数字加1。

答案 1 :(得分:2)

使用简单的字符串函数,你也可以在没有正则表达式的情况下完成:

$filename = '13132432343243432434234_1.jpg';

// Splits into '13132432343243432434234_1' and '.jpg'
list($name, $ext) = explode('.', $filename);

// Splits into '13132432343243432434234' and '1'
list($basename, $index) = explode('_', $name);

$index++; // increment the index

$filename = $basename . '_' . $index . '.' . $ext;

答案 2 :(得分:1)

这应该可以胜任。

<?php

$file = "13132432343243432434234_1.jpg"; // old filename

list ($fn,$ext) = preg_split("/\./",$file); // split name and extension

print_r(array($fn,$ext));

list($pre,$suffix) = preg_split("/_/",$fn); // split prefix and suffix

print_r(array($pre,$suffix));

$suffix++; // increment  by 1

$file = $pre . "_" . $suffix . $ext; // regroup

echo "NEW FILENAME: " . $file; // new filename

?>