| |
вает как прямые, так и обратные слэши под
Windows.
string dirname(string $path)
Возвращает имя каталога, выделенное из пути $path. Функция довольно "разумна" и
умеет обрабатывать нетривиальные ситуации, как это явствует из примеров:
echo dirname("/home/file.txt"); // выводит "/home"
echo dirname("../file.txt"); // выводит ".."
echo dirname("/file.txt"); // выводит "/" под Unix, "\" под Windows
echo dirname("/"); // то же самое
echo dirname("file.txt"); // выводит "."
Заметьте, что если функции dirname() передать "чистое" имя файла, она вернет
".", что означает "текущий каталог".
В предыдущих версиях PHP (например, в версии 3) функция была гораздо ме-
нее "интеллектуальна". Например, для "чистого" имени файла она возвращала
его самого, а не точку.
string tempnam(string $dir, string $prefix)
Генерирует имя файла в каталоге $dir с префиксом $prefix в имени, причем так,
чтобы созданный под этим именем в будущем файл был уникален. Для этого к строке
$prefix присоединяется некое случайное число. Например, вызов
tempnam("/tmp","temp") может возвратить что-то типа /tmp/temp3a6b243c.
Если такое имя нужно создать в текущем каталоге, передайте, как обычно, $dir=".
".
Обратите внимание, что использовать tempnam() в следующем контексте опасно:
$fname=tempnam();
$f=fopen($fname,"w");
// работаем с временным файлом
Дело в том, что хотя функция и возвращает уникальное имя, все-таки существует
ве-
роятность того, что между tempnam() и fopen() сюда "вклинится" какой-нибудь
другой процесс, в котором функция tempnam() сгенерировала идентичное имя фай-
ла. Такая вероятность исчезающе мала, но все-таки она существует. Поэтому лучше
воспользоваться функцией tmpfile() или функциями блокировки.
Часть IV. Стандартные функции PHP 258
string realpath(string $path)
Эта функция очень часто оказывается чрезвычайно полезной. На нее возложена до-
вольно непростая задача: преобразовать относительный путь в $path в абсолютный,
т. е. начинающийся от корня. Например:
echo realpath("../t.php"); // абсолютный путь — например, /home/test.php
echo realpath("."); // выводит имя текущего каталога
К сожалению, последний оператор в некоторых версиях PHP выводит не тот же
самый результат, что и функция getcwd(). А именно, к имени текущего ката-
лога "прицепляются" слэши, а иногда даже и /./. Так что, если без определе-
ния текущего каталога вам не обойтись, используйте getcwd().
Файл, который указывается в параметре $path, должен существовать, иначе функция
возвращает false.
Функция realpath() также "расширяет" имена всех символических ссылок,
которые могут встретиться в строке, задающей путь к файлу. Она всегда воз-
вращает абсолютное каноническое имя, состоящее только из имен файлов —
но не имен ссылок.
Функции манипулирования
целыми файлами
На самом деле всех перечисленных выше функций достаточно для реализации обмена
с файлами любой сложности. Однако часто бывает нужно работать с файлами не по-
строчно (или поблочно), а целиком. Функции, описанные в этом разделе, как раз
для
этого и предназначены.
bool copy(string $src, string $dst)
Копирует файл с именем $src в файл с именем $dst. При этом, если файл $dst на
момент вызова существовал, осуществляется его перезапись. Функция возвращает
true, если копирование прошло успешно, а в случае провала — false.
bool rename(string $oldname, string $newname)
Переименовывает (или перемещает, что одно и то же) файл с именем $oldname в
файл с именем $newname. Если файл $newname уже существует, регистрируется
ошибка, и функция возвращает false. То же происходит и при всех прочих неуда-
чах. Если же все прошло успеш
|
|