Добавить суффикс к имени файла - PullRequest
3 голосов
/ 04 августа 2010
$config['file_name'] = preg_replace('/(\.gif|\.jpg|\.png)/', '_thumb$1', $filename);

В основном я хочу, чтобы filename.jpg стал filename_thumb.jpg

Я не понимаю почему, но расширение повторяется дважды..

Ответы [ 3 ]

10 голосов
/ 04 августа 2010

Лучший способ сделать это, вероятно, был бы ...

$filename_ext = pathinfo($filename, PATHINFO_EXTENSION);

$filename = preg_replace('/^(.*)\.' . $filename_ext . '$/', '$1_thumb.' . $filename_ext, $filename);

Я только что проверил это, с $filename = 'path/to/something.jpg';, и результат был path/to/something_thumb.jpg.

Я говорю лучший способ , потому что обычно лучше использовать встроенные функции PHP.Это также учитывает все расширения файлов, которые может обрабатывать PHP (будучи разделением строк, это должно быть все).

5 голосов
/ 04 августа 2010

Должно работать.

echo preg_replace('/(\.gif|\.jpg|\.png)/', '_thumb$1', "filename.jpg");

дает filename_thumb.jpg.

В любом случае используйте вместо этого выражение '/(\.gif|\.jpg|\.png)$/' (лучше, не используйте скобки и замените $ 1 на $ 0), так что она совпадает со строкой только в конце.

0 голосов
/ 05 апреля 2019

Возможно, было бы лучше использовать PHP в методах сборки, таких как pathinfo и basename.это будет обрабатывать все детские файлы, включая файлы без расширения

$extension = pathinfo($filename, PATHINFO_EXTENSION);
$baseName = basename($filename, ".{$extension}");
$newName = "{$baseName}_thumb.{$extension}";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...