Изменить имя файла php

Обновлено: 06.07.2024

Главная Работа с файлами и каталогами (директориями) Работа с именами файлов и файловыми путями

Выделяет имя файла из пути.
Синтаксис:

Выделяет основное имя из пути $path
Примеры:

Функция basename() не проверяет существование файла. Она просто берет часть строки после самого правого слеша и возвращает ее.

Эта функция правильно обрабатывает как прямые, так и обратные слеши под Windows.

Выделяет имя каталога.
Синтаксис:

Возвращает имя каталога, выделенное из пути $path. Функция довольно "разумна" и умеет выделять нетривиальные ситуации, которые описаны в примерах:

Если функции dirname() передать просто имя файла, она вернет ".", что означает "текущий каталог".

Генерирует уникальное имя файла в определенном каталоге.
Синтаксис:

Генерирует имя файла в каталоге $dir с префиксом $prefix в имени, причем так, чтобы созданный под этим именем в будущем файл был уникален. Для этого к строке $prefix присоединяется некое случайное число.
Например, вызов tempnam("/tmp","temp") может возвратить /tmp/temp3a6b243c.
Если такое имя нужно создать в текущем каталоге, передайте $dir="."

Преобразует относительный путь в абсолютный.
Синтаксис:

Преобразует относительный путь $path в абсолютный, т.е. начинающийся от корня.
Пример:

Файл, который указан в параметре $path, должен существовать, иначе функция возвратит false.

(PHP 3, PHP 4, PHP 5)

rename -- Переименовывает файл или директорию
Описание

Пытается переименовать oldname в newname.
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Пример использования функции rename()

Замечание: В версиях PHP ниже 4.3.3, функция rename() не могла переименовать файлы, находящиеся на другом разделе в ОС, основанных на *nix.
Замечание: Начиная с версии PHP 5.0.0, функция rename() также может быть использована с некоторыми обвёртками URL.

Замечание: Обвёртка, используемая в oldname ОБЯЗАНА совпадать с обвёрткой, используемой в newname.
Замечание: Атрибут context был добавлен начиная с версии PHP 5.0.0.

Находит файловые пути, совпадающие с шаблоном (PHP 4 >= 4.3.0, PHP 5)

Функция glob() ищет все пути, совпадающие с шаблоном pattern согласно правилам, используемым в функции glob() библиотеки libc, которые похожи на правила, используемые большинством распространённых оболочек. Раскрытие тильды или подстановки параметров не совершаются.

Возвращает массив, который содержит совпадающие файлы/директории или FALSE в случае ошибки.

GLOB_MARK - Добавляет слеш к каждому возвращаемому предмету
GLOB_NOSORT - Возвращает файлы в таком виде, в котором они содержатся в директории (без сортировки)
GLOB_NOCHECK - Возвращает шаблон поиска, если с его помощью не был найден ни один файл.
GLOB_NOESCAPE - Обратные слеши не экранируют метасимволы
GLOB_BRACE - Раскрывает для совпадения с 'a', 'b' или 'c'
GLOB_ONLYDIR - Возвращает только директории, совпадающие с шаблоном

Замечание: В версиях ниже PHP ниже 4.3.3 GLOB_ONLYDIR был не доступен в Windows и других системах, не использующих библиотеку GNU C.

Удобный способ, как при помощи glob() можно заменить opendir() и её друзей.

Результат будет примерно таким:

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

Возвращает информацию о пути к файлу (PHP 4 >= 4.0.3, PHP5)

pathinfo() возвращает ассоциативный массив, который содержит информацию о пути path. Возвращаемый массив состоит из следующих элементов: dirname, basename и extension.

Вы можете указать, какие элементы будут возвращены при помощи необязательного параметра options. Он состоит из PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION и PATHINFO_FILENAME (появилась в PHP 5.2.0). По умолчанию возвращаются все элементы.

Если с полным путём возникнут проблемы, то можно воспользоваться адресом корневой папки сайта, который находится в переменной $_SERVER['DOCUMENT_ROOT'].

Тогда путь к файлу можно прописать как:
$_SERVER['DOCUMENT_ROOT'] . '/mouse.txt'

Запись файла

С помощью функции file_put_contents можно записывать данные в файл. Приведём пример её использования: В результате выполнения этого примера, в файл 'mouse.txt', который находится в корневой папке сайта, будет записана строка 'Тише, мыши, кот на крыше'. Если файла не существует, то он будет создан. Если файл уже существовал, то его содержимое будет перезаписано.

  • FILE_APPEND - заставляет функцию записывать передаваемые данные в конец файла. Используется часто для создания файлов с логами (историей каких-либо действий)
  • LOCK_EX - блокирует файл во время записи так, что никто не может прочитать или изменить его
  • FILE_USE_INCLUDE_PATH - ищет файл в подключаемых дерикториях. Этот флаг используется крайне редко

Проверка существования файла

Функция file_exists делает проверку существования файла. Принимает единственный параметр - полный путь к файлу. Часто используется внутри условия if( ), потому что выдает true, если файл существует, и false, если файл не существует. Потому что существует

Удаление файла

Для удаления файлов в PHP используется функция unlink. Ей, как и все предыдущим функциям, передаётся абсолютный путь к файлу в системе. Приведём пример удаления файла с её помощью, но перед удалением сделаем проверку существует ли вообще файл, который собираемся удалить: Из-за особенностей работы UNIX систем, при удалении файла функцией unlink файл будет существовать до тех пор, пока существует хотя бы одна символическая или жёсткая ссылка не него. Функция unlink возвращает true в случае успешного завершения удаления.

Переименование и перемещение файла

Функция rename в PHP умеет переименовывать файл или директорию. На вход она принимает два параметра: путь к файлу, который надо переименовать, и путь к файлу, который получится в результате переименовывания. Необходимо задавать полный путь: В результате выполнения этой функции файл 'mouse.txt', который находится в корневой папке сайта, будет переименован в '/cat.txt'. Если файл '/cat.txt' уже существовал. то он обязательно будет перезаписан.

Как можно догадаться, эта функция умеет не только переименовывать файлы и папки, но и перемещать их в другие директори. Для этого в новом названии надо указать новый путь. К примеру: При выполнении такого кода файл 'mouse.txt' будет перемещён папку '/home/'. Функция rename возвращает true в случае успешного завершения переименования.

Копирование файла

Копирование файла в PHP выполняется с помощью функции copy. Которая похожа на функцию переименовывания. Она тоже принимает два параметра. Приведём пример использования: В результате выполнения этой функции файл 'mouse1.txt', который находится в корневой папке сайта, будет скопирован в '/mouse2.txt'. Если '/mouse2.txt' уже существовал, то он будет перезаписан. Функция copy возвращает true в случае успешного завершения копирования.

Определение размера файла

Иногда появляется задача определения размера файла. Эта задача решается функцией filesize. У этой функции только один параметр - полный путь к файлу. И возвращает она размер файла, указанный в байтах. Попробуем применить функцию на практике:

Функция rename позволяет переименовывать файлы. Первым параметром указываем старое имя файла, вторым - новое имя файла:

Пусть в корне вашего сайта лежит файл old.txt . Переименуйте его на new.txt .

Перемещение

Функция rename позволяет также перемещать файлы. Для этого вторым параметром функции нужно указать новый путь к файлу. Давайте для примера перенесем наш файл в папку dir , одновременно переименовав его на new.txt :

Можно сделать только перемещение, а сам файл не переименовывать:

Пусть в корне вашего сайта лежит файл file.txt . Пусть также в корне вашего сайта лежит папка dir . Переместите файл в эту папку.

Пусть в корне вашего сайта лежит папка dir1 , а в ней файл file.txt . Пусть также в корне вашего сайта лежит папка dir2 . Переместите файл в эту папку.

Копирование

Функция copy позволяет копировать файл. Первым параметром она принимает путь к файлу, который хотим копировать, вторым - новый путь файла, куда хотим положить копию. Мы можем сделать копию и положить ее рядом, или положить ее в другую папку. Сделаем просто копию:

Давайте для примера сделаем копию файла, разместив ее в папке с исходным файлом:

А теперь давайте поместим нашу копию в папку dir :

Пусть в корне вашего сайта лежит файл. С помощью цикла положите в папку copy пять копий этого файла. Именем файлов копий пусть будут их порядковые номера.

Удаление

Для удаления файлов используется функция unlink . Параметром она принимает путь к удаляемому файлу:

Пусть в корне вашего сайта лежат файлы 1.txt , 2.txt и 3.txt . Вручную сделайте массив с именами этих файлов. Переберите его циклом и удалите все эти файлы.

Размер файла

Функция filesize позволяет находить размеры файла в байтах. Пример:

Размер в байтах легко можно перевести в килобайты:

А теперь давайте переведем в мегабайты:

Пусть в корне вашего сайта лежит файл. Узнайте его размер, выведите на экран.

Модифицируйте предыдущую задачу так, чтобы размер файла выводился в килобайтах.

Положите в корень вашего сайта какую-нибудь картинку размером более мегабайта. Узнайте размер этого файла и переведите его в мегабайты.

Положите в корень вашего сайта какой-нибудь фильм размером более гигабайта. Узнайте размер этого файла и переведите его в гигабайты.

Проверка существования

Функция file_exists проверяет существует ли файл, путь к которому передан параметром. Пример:

Как правило, эта функция используется для того, чтобы проверить наличие файла перед выполнением операции над ним. Например, так:

За счет php языка программирования можно решать множество полезных задач не только для веб программ и сайтов, но даже и в прикладном делопроизводстве. Представьте, что у вас есть более сотни файлов, которые нужно автоматом переименовать и привести к общему виду.

Вручную можно произвести такую не благодарную операцию, но это займет много времени. Проще использовать денвер или вебсервер, куда можно загрузить все файлы, а затем запустить скрипт, который все сделает сам. Очень часто это нужно, когда заказчик передает вам сотни изображений, которые имеют кириллические имена. А ваш сайт поддерживает только латинские символы. В этом и поможет скрипт описанный ниже:

Скрипт переименования файлов на php

<?php header("Content-Type: text/html; charset=utf-8");
set_time_limit(0);
$i = 1;
$imgrename = 'new_img_';
$imgrename = iconv('utf-8', 'windows-1251', $imgrename);
foreach (glob("original/*.", GLOB_BRACE) as $filename) $imgrename1 = $imgrename.$i.".".pathinfo($filename, PATHINFO_EXTENSION);
copy($filename, "rename/".$imgrename1);
$i++;
>
?>

Не смотря на то, что данный скрипт достаточно простой, он очень эффективен. Более того у него есть фильтрация по типам переименовываемых файлов. Но обо всем по порядку.

Чтобы скрипт работал создайте 2 папки, например в корне вашего денвера: original (в нее нужно загружать файлы, которые надо переименовать) и rename (здесь будут переименованные файлы-копии), а также файл index.php (обязательно в кодировке UTF-8 без BOM) с содержимым описанным выше.

В переменную $imgrename вписывается название шаблона будущего файла. Если бы картинок было 100, то после работы скрипта первая бы называлась new_img_1.jpg, а последняя new_img_100.jpg.

Фильтрация по расширениям файлов выполняется за счет glob() функции. Сейчас внутри нее прописаны те расширения, которые должна искать программа. Естественно, вы можете задать свои, например: doc, docx, csv и т.д.

Функция copy() - копирует переименованные файлы в папку rename. Оригинальные файлы никуда не исчезают. $i++; - увеличивает интерацию для имени файла.

Вот таким несложным скриптом можно решать прикладные задачи по автоматическому переименованию множества файлов на php.

Читайте также: