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

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

Решение
Для выделения имени файла применяется функция 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 принимает символ / в качестве разделителя каталогов.
Теги:
права доступа
Добавлено: 22 Июля 2018 18:38:45 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...