Работа с именами файлов в PHP

Набор PHP функций для работы с путями и именами файлов.

echo basename('path/file.png'); // file.png
PHP
$info = pathinfo('path/file.png');
echo $info['filename']; // file

/* или */
echo pathinfo('path/donut.png', PATHINFO_FILENAME); // file
PHP
echo mb_strtolower(mb_substr(mb_strrchr('path/file.png', '.'), 1)); // png

/* или */
echo pathinfo('path/file.png', PATHINFO_EXTENSION); // png
PHP

Заменить расширение .jpeg на .jpg:

$file_name = 'file.jpeg';
$file_new = preg_replace('/\.jpeg$/', '.jpg', $file_name); 

echo $file_new; // file.jpg
PHP

Заменить несколько расширений на одно (.jpg, .jpeg, .png на .webp):

$file_name = 'file.jpeg';
$file_new = preg_replace('/\.(jpg|jpeg|png)$/', '.webp', $file_name); 	

echo $file_new;	// file.webp
PHP
$info = pathinfo('path/file.png');
$name = $info['dirname'] . '/' . $info['filename'] . '-' . time() . '.' . $info['extension'];

echo $name; // path/file-1610877618.png
PHP

Чтобы не затереть существующий файл на сервере можно применить данную функцию.

В функцию передаётся путь и имя файла, если на сервере уже существует такой файл, функция к концу файла приписывает префикс. Также если директория не существует, пытается её создать.

function safe_file($filename)
{
	$dir = dirname($filename);
	if (!is_dir($dir)) {
		mkdir($dir, 0777, true);
	}

	$info = pathinfo($filename);
	$name = $dir . '/' . $info['filename']; 
	$prefix = '';
	$ext = (empty($info['extension'])) ? '' : '.' . $info['extension'];

	if (is_file($name . $ext)) {
		$i = 1;
		$prefix = '_' . $i;
		while (is_file($name . $prefix . $ext)) {
			$prefix = '_' . ++$i;
		}
	}

	return $name . $prefix . $ext;
}  

// Если в директории есть файл log.txt, файл будет сохранен с названием log_1.txt
file_put_contents(safe_file(__DIR__ . '/log.txt'), $text);
PHP
06.03.2020, обновлено 13.03.2021
4792

Комментарии

, чтобы добавить комментарий.

Другие публикации

Отдача файлов на скачивание в браузере
С появлением атрибута download у ссылок, появилась возможность указать браузеру что файл в href нужно сохранить на...
38118
+1
Управление доступом к файлам
Действие файла .htaccess распространяется на директорию и подкатегории в котором он размещен.
6610
0
Поиск файлов в PHP
Для поиска файлов на сервере хорошо подходит функция glob(), которая возвращает список файлов по заданной маске, например...
14959
0
Работа с FTP в PHP
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
10268
+1
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
19293
+8
Бот Телеграм на PHP
Примеры как зарегистрировать бота в Телеграм, описание и взаимодействие с основными методами API.
104043
+41