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

发布于 2024-12-07 10:43:04 字数 246 浏览 1 评论 0原文

文件名类似于 whatever_test_123234545.gif

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

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

A filename looks like whatever_test_123234545.gif.

What is the easiest way to remove the last underscore followed by all characters and numbers after it but not the the dot extension.

In other words i want whatever_test_123234545.gif to look like whatever_test.gif. A filename can have a random number of underscores. I just want to remove the last part before .ext.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

oО清风挽发oО 2024-12-14 10:43:04

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

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

并且要实际重命名文件:

rename($filename, $new_filename);

This will remove everything between the last underscore and the .. If the filename does't have a . or doesn't have an _ it will not change the filename:

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

And to actually rename the file:

rename($filename, $new_filename);
吃→可爱长大的 2024-12-14 10:43:04

下面的代码将替换 .其中 XXX 是任意数字。仅当 XXX 是数字时才会替换。

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

The below code will replace the last _XXXXXX before the . where XXX is any number.It will replace only if XXX is a number.

$filename = 'whatever_test_56623736373738333.gif';
$new_filename = preg_replace('/_[0-9]+(\.)/', '.', $filename, 1);
回首观望 2024-12-14 10:43:04
$x = 'whatever_test_123234545.gif';    
$newstring = substr($x, 0, strrpos($x, '_')).substr($x, strrpos($x, '.'));
$x = 'whatever_test_123234545.gif';    
$newstring = substr($x, 0, strrpos($x, '_')).substr($x, strrpos($x, '.'));
少钕鈤記 2024-12-14 10:43:04

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

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

This one will replace the last _XXXXXX before the . where XXX is any string.

<?php 
echo preg_replace('/_[a-zA-Z0-9]+(\.)/', '.', 'whatever_test_123234545.gif', 1);
?>
// Prints: whatever_test.gif
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文