PDA

Просмотр полной версии : регулярное выражение для замены всего имени файла, кроме его расширения


loover
25.03.2009, 20:06
как?
написал вот это:
$filename = $_FILES["Filedata"]["name"];
$newfilename = preg_replace("/[^.(?:jp(?:e?g|e|2)|gif|png|tiff?|bmp|ico)]/", "", $filename);
но в имени файла остаются и буквы расширения.

duhowka
31.03.2009, 23:21
эм. я не совсем конечно понимаю, что вы хотите сделать изменением расширения,
НО так не проще?
$newfilename = preg_replace('/.(jpeg|jpg|gif|png|tiff|bmp|ico)/', '', $filename); ну или как вариант $newfilename = preg_replace('/.(jpeg|jpg|gif|png|tiff|bmp|ico){1,4}/', '', $filename);

loover
01.04.2009, 18:53
вы меня не так поняли. мне надо изменить/заменить имя файла КРОМЕ его расширения. т.е. расширение оставить, а все буквы в имени файла заменить.
мне это нужно для шаблонного именования загружаемых файлов. возможно, есть другой способ, наверняка этот вопрос уже решили. просто я ноль в PHP. но есть желание научиться.

duhowka
03.04.2009, 00:48
ну проще наверно вытащить $_FILES['uploadfile']['type'] - MIME-тип принятого файла (если браузер смог его определить).
Ну как-то так

$filename = $_FILES['Filedata']['type'];
$newfilename = preg_replace('/image\//', '', $filename);
$newfilename = time().".".$newfilename;