Разделение имени файла на составляющие

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

Решение
Для выделения имени файла применяется функция basename(), а функция dirname() – для выделения пути к нему:

$full_name = '/usr/local/php/php.ini';
$base = basename($full_name); // значение переменной $base равно php.ini
$dir = dirname($full_name); // значение переменной $dir
равно /usr/local/php

Функция pathinfo() позволяет получить из ассоциативного массива имя каталога, базовое имя и расширение:

$info = pathinfo('/usr/local/php/php.ini');

Обсуждение
Для создания временного файла в каталоге существующего файла вызовите функцию dirname(), чтобы найти каталог, и передайте его функции tempnam():

$dir = dirname($existing_file);
$temp = tempnam($dir,'temp');
$temp_fh = fopen($temp,'w');

Элементы ассоциативного массива, возвращенные функцией pathinfo(), – это dirname, basename и extension:

$info = pathinfo('/usr/local/php/php.ini');
print_r($info);
Array
(
[dirname] => /usr/local/php
[basename] => php.ini
[extension] => ini
)

Можно также передать функции basename() необязательный суффикс, чтобы удалить его из имени файла.


В этом случае переменная $base получит значение php:

$base = basename('/usr/local/php/php.ini','.ini');

Применение функций basename(), dirname() и pathinfo() более переносимо, чем просто разделение полного имени файла символом /, поскольку в них используется разделитель, соответствующий операционной системе. В Windows эти функции считают разделителем каталогов и /, и \.

На других платформах используется только символ /.

В PHP нет встроенной функции для обратного объединения в полное имя файла частей, возвращенных функциями basename(), dirname() и pathinfo(). Чтобы сделать это, надо объединить части с помощью символов . и /:

$dirname = '/usr/local/php';
$basename = 'php';
$extension = 'ini';
$full_name = $dirname . '/' . $basename . '.' . $extension;

Можно спокойно передать полученное таким образом полное имя файла файловой функции PHP в Windows, поскольку PHP в Windows принимает символ / в качестве разделителя каталогов.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Изменение прав доступа к файлу или его владельца
Копирование и перемещение файла
Обработка всех файлов в каталоге
Обработка всех файлов в каталоге
Получение и установка меток даты/времени файла

Вернуться в раздел: PHP / 19. Каталоги