PHP, как удалить последнюю часть имени файла после подчеркивания - PullRequest
2 голосов
/ 03 октября 2011

Имя файла выглядит как whatever_test_123234545.gif.

Какой самый простой способ удалить последнее подчеркивание, за которым следуют все символы и цифры после него, но не расширение точки.

Другими словами, я хочу, чтобы whatever_test_123234545.gif выглядело как whatever_test.gif. Имя файла может иметь случайное количество символов подчеркивания. Я просто хочу удалить последнюю часть до .ext.

Ответы [ 4 ]

3 голосов
/ 03 октября 2011

Это удалит все между последним подчеркиванием и .. Если имя файла не имеет . или не имеет _, оно не изменит имя файла:

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

А чтобы фактически переименовать файл:

rename($filename, $new_filename);
2 голосов
/ 06 мая 2019

Приведенный ниже код заменит последний _XXXXXX перед.где XXX - любое число. Он заменит только если XXX - число.

$filename = 'whatever_test_56623736373738333.gif';
$new_filename = preg_replace('/_[0-9]+(\.)/', '.', $filename, 1);
1 голос
/ 03 октября 2011

Этот заменит последний _XXXXXX перед. где XXX - любая строка.

<?php 
echo preg_replace('/_[a-zA-Z0-9]+(\.)/', '.', 'whatever_test_123234545.gif', 1);
?>
// Prints: whatever_test.gif
1 голос
/ 03 октября 2011
$x = 'whatever_test_123234545.gif';    
$newstring = substr($x, 0, strrpos($x, '_')).substr($x, strrpos($x, '.'));
...