Допустим, у меня есть строка вроде:
Cant_Hold_Us _-_ Fingerstyle_Guitar_0.mp3
Как я могу избавиться от _0.mp3
динамически с PHP? Значения не являются жестко закодированными для текущего примера. Может быть, если я использую explode
?
$old = "your file name here";
$new = substr($old, 0, strrpos($old, "_"));
substr
Метод будет принимать только ту часть строки, которую вы хотите.
strrpos
Метод находит последний индекс подчеркивания и передает это число в substr
метод, чтобы он знал, как далеко, чтобы сократить. Этот метод идеален, потому что вместо жесткого кодирования определенного значения скрипт будет динамически меняться для каждого файла, как вы и предлагали.
Небольшое предупреждение: если имя файла не содержит подчеркивания, метод не будет знать, куда переходить, и вызовет ошибку при выполнении. Хорошей практикой будет проверка if (strrpos($old, "_") !== false)
,
Мне нравится ответ Confiqure. В качестве дополнения вы также можете использовать регулярное выражение, если обнаружите, что вам нужно больше силы.
$old = "Cant_Hold_Us_-_Fingerstyle_Guitar_0.mp3";
$new = preg_replace('/_\d+\.mp3$/', '', $old);
Регекс твой друг. Посмотри на preg_match
и / или preg_replace
,
$title = preg_replace("/_[0-9]+\.mp3$/i", "", $x);
Работает и для blablabla_21.mp3 ….