PHP如何在下划线后删除文件名的最后一部分

时间:2011-10-03 01:38:42

标签: php preg-replace explode

文件名看起来像whatever_test_123234545.gif

最简单的方法是删除最后一个下划线,后跟所有字符和数字,但不是点扩展名。

换句话说,我希望whatever_test_123234545.gif看起来像whatever_test.gif。文件名可以具有随机数的下划线。我只想删除.ext之前的最后一部分。

4 个答案:

答案 0 :(得分:3)

这将删除最后一个下划线和.之间的所有内容。如果文件名没有.或没有_,则不会更改文件名:

$filename = 'whatever_test_123234545.gif';
$new_filename = preg_replace('/_[^_.]*\./', '.', $filename);

并实际重命名文件:

rename($filename, $new_filename);

答案 1 :(得分:2)

以下代码将替换最后一个_XXXXXX。 XXX是任何数字。仅当XXX是数字时才会替换。

$filename = 'whatever_test_56623736373738333.gif';
$new_filename = preg_replace('/_[0-9]+(\.)/', '.', $filename, 1);

答案 2 :(得分:1)

$x = 'whatever_test_123234545.gif';    
$newstring = substr($x, 0, strrpos($x, '_')).substr($x, strrpos($x, '.'));

答案 3 :(得分:1)

这个将替换之前的最后一个_XXXXXX。其中XXX是任何字符串。

<?php 
echo preg_replace('/_[a-zA-Z0-9]+(\.)/', '.', 'whatever_test_123234545.gif', 1);
?>
// Prints: whatever_test.gif