Извлечение имени файла

Допустим, у меня есть строка вроде:

Cant_Hold_Us _-_ Fingerstyle_Guitar_0.mp3

Как я могу избавиться от _0.mp3 динамически с PHP? Значения не являются жестко закодированными для текущего примера. Может быть, если я использую explode?

0

Решение

$old = "your file name here";
$new = substr($old, 0, strrpos($old, "_"));

substr Метод будет принимать только ту часть строки, которую вы хотите.

strrpos Метод находит последний индекс подчеркивания и передает это число в substr метод, чтобы он знал, как далеко, чтобы сократить. Этот метод идеален, потому что вместо жесткого кодирования определенного значения скрипт будет динамически меняться для каждого файла, как вы и предлагали.

Небольшое предупреждение: если имя файла не содержит подчеркивания, метод не будет знать, куда переходить, и вызовет ошибку при выполнении. Хорошей практикой будет проверка if (strrpos($old, "_") !== false),

2

Другие решения

Мне нравится ответ Confiqure. В качестве дополнения вы также можете использовать регулярное выражение, если обнаружите, что вам нужно больше силы.

$old = "Cant_Hold_Us_-_Fingerstyle_Guitar_0.mp3";
$new = preg_replace('/_\d+\.mp3$/', '', $old);
2

Регекс твой друг. Посмотри на preg_match и / или preg_replace,

$title = preg_replace("/_[0-9]+\.mp3$/i", "", $x);

Работает и для blablabla_21.mp3 ….

1
По вопросам рекламы [email protected]