Php работа файловой системой

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

Следующие функции для работы с файловой системой являются частью ядра PHP, поэтому вы можете использовать эти функции в своих скриптах без дополнительной установки.

Функция Описание
basename() Возвращает компонент имени файла пути
chgrp() Изменяет файловую группу
chmod() Изменяет режим файла
chown() Меняет владельца файла
clearstatcache() Очищает кеш состояния файла
copy() Копирует файл
delete() Смотрите unlink() или unset()
dirname() Возвращает путь к родительскому каталогу
disk_free_space() Возвращает доступное пространство в файловой системе или разделе диска
disk_total_space() Возвращает общий размер файловой системы или раздела диска
diskfreespace() Возвращает доступное пространство в файловой системе или разделе диска. Псевдоним disk_free_space()
fclose() Закрывает указатель открытого файла
feof() Тесты на конец файла для указателя файла
fflush() Сбрасывает буферизованный вывод в файл
fgetc() Возвращает символ из указателя файла
fgetcsv() Получает строку из указателя файла и парсинг для полей CSV
fgets() Читает определенное количество байтов из файла
fgetss() Читает определенное количество байтов из файла и удаляет HTML-теги и PHP-код
file() Читает весь файл в массив
file_exists() Проверяет, существует ли файл или каталог
file_get_contents() Читает весь файл в строку
file_put_contents() Записаывает строку в файл
fileatime() Возвращает время последнего доступа к файлу
filectime() Возвращает время последнего изменения файла
filegroup() Возвращает идентификатор группы файла
fileinode() Возвращает номер inode файла
filemtime() Возвращает время последней модификации файла
fileowner() Возвращает идентификатор пользователя владельца файла
fileperms() Возвращает разрешения для файла
filesize() Возвращает размер файла
filetype() Returns the file type
flock() Блокирует или освобождает файл
fnmatch() Сопоставляет имя файла или строку с указанным шаблоном
fopen() Открывает файл или URL
fpassthru() Выводит все оставшиеся данные в указатель файла
fputcsv() Форматирует строку как CSV и записать в указатель файла
fputs() Псевдоним fwrite()
fread() Читает определенное количество байтов из файла
fscanf() Анализирует ввод из файла в соответствии с указанным форматом
fseek() Ищет указатель файла
fstat() Возвращает информацию о файле, используя указатель открытого файла
ftell() Возвращает текущую позицию указателя чтения / записи файла
ftruncate() Обрезает файл до заданной длины
fwrite() Записывает содержимое строки в указатель файла
glob() Возвращает массив имен файлов / каталогов, соответствующих указанному шаблону
is_dir() Проверяет, является ли файл каталогом
is_executable() Проверяет, является ли файл исполняемым
is_file() Проверяет, является ли файл обычным файлом
is_link() Проверяет, является ли имя файла символической ссылкой
is_readable() Проверяет, существует ли файл и доступен ли для чтения
is_uploaded_file() Проверяет, был ли файл загружен через HTTP POST
is_writable() Проверяет, доступно ли для записи имя файла
is_writeable() Псевдоним is_writable()
lchgrp() Изменяет групповое владение символической ссылкой
lchown() Изменяет право собственности пользователя на символическую ссылку
link() Создает жесткую ссылку
linkinfo() Возвращает информацию о ссылке
lstat() Возвращает информацию о файле или символической ссылке
mkdir() Создает каталог
move_uploaded_file() Перемещает загруженный файл в новое место
parse_ini_file() Разбирает файл конфигурации
parse_ini_string() Разбирает строку конфигурации
pathinfo() Возвращает информацию о пути к файлу
pclose() Закрывает указатель файла процесса
popen() Открывает указатель файла процесса
readfile() Читает файл и записывает в буфер вывода
readlink() Возвращает цель символьной ссылки
realpath() Возвращает канонизированный абсолютный путь
realpath_cache_get() Возвращает записи кэша realpath
realpath_cache_size() Возвращает размер кеша realpath
rename() Переименовывает файл или каталог
rewind() Перематывает назад позиции указателя файла
rmdir() Удаляет пустой каталог
set_file_buffer() Устанавливает размер буфера файла
stat() Возвращает информацию о файле
symlink() Создает символическую ссылку
tempnam() Создает временный файл с уникальным именем файла
tmpfile() Создает уникальный временный файл
touch() Устанавливает время доступа и изменения файла
umask() Изменяет текущую маску
unlink() Удаляет файл
Читайте также:  Java классы типы переменных

etxt banner 480x320 flexbe banner 480x320 skillbox banner 480x320

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Источник

Смотрите также

Описание родственных функций вы сможете найти в разделах Каталоги и Выполнение программ.

За списком обёрток URL для работы с удалёнными файлами и пояснениями обращайтесь к главе Поддерживаемые протоколы и обёртки.

User Contributed Notes 8 notes

I just learned that, to specify file names in a portable manner, you DON’T need ‘DIRECTORY_SEPARATOR’ — just use ‘/’. This really surprised and shocked me, as until now I typed about a zillion times ‘DIRECTORY_SEPARATOR’ to stay platform independent — unnecessary. Don’t make the same mistake.

You have an array of directories (straightforward list of directories):

$array = array(
‘/home/drapeko/var’ ,
‘/home/drapeko/var/y’ ,
‘/home/drapeko’ ,
‘/home’ ,
‘/var/libexec’
);
);
?>

And you would like to transform this array to hierarchy of directories:

$array = array (
‘home’ => array (
‘drapeko’ => array (
‘var’ => array (
‘y’ => array()
)
)
),
‘var’ => array(
‘libexec’ => array()
)
);
?>

How can you do it?

First of all the below function will help us.

/**
* This function converts real filesystem path to the string array representation.
*
* for example,
* ‘/home/drapeko/var/y will be converted to $result_array[‘home’][‘drapeko’][‘var’][‘y’]
* ‘/home/drapeko/var/y/file.txt will be converted to $result_array[‘home’][‘drapeko’][‘var’][‘y’]
*
* @param $path realpath of the directory
* @return string string array representation of the path
*/
function pathToArrayStr ( $path ) <
// TODO constants/configs?
$res_path = str_replace (array( ‘:/’ , ‘:\\’ , ‘/’ , ‘\\’ , DIRECTORY_SEPARATOR ), ‘/’ , $path );
// if the first or last symbol is ‘/’ delete it (e.g. for linux)
$res_path = preg_replace (array( «/^\//» , «/\/$/» ), » , $res_path );
// create string
$res_path = ‘[\» . str_replace ( ‘/’ , ‘\’][\» , $res_path ). ‘\’]’ ;

return $res_path ;
>
?>

It simply converts the real path of the file to array string representation.

How can you use this function? I know it looks like a little confusing. But it’s quite simple. Consider the example below:

$result = array();
$check = array();
foreach( $array as $val ) <
$str = pathToArrayStr ( $val , ‘result’ );
foreach( $check as $ck ) <
if ( strpos ( $ck , $str ) !== false ) <
continue 2 ;
>
>
$check [] = $str ;
eval( ‘$result’ . $str . ‘ = array();’ );
>
print_r ( $result );
?>

Heh, how do you find it? This approach has helped me very much. I hope you will find it useful. 🙂

I made this function to search and/or display files by extension or for a string occurance in the filename. Any comments or enhancements are welcome offcourse. I’ll update this function soon.

usage: list_files([string], [string], [int 1 | 0], [int 1 | 0]);

search for extension: list_files([string], [string], [0], [int 1 | 0]);
returns array: $myArray = list_files([string], [string], [0], [0]);
echo result: list_files([string], [string], [0], [1]);

search for string occurance: list_files([string], [string], [1], [int 1 | 0]);
returns array: $myArray = list_files([string], [string], [1], [0]);
echo result: list_files([string], [string], [1], [1]);

function list_files ( $directory , $stringSearch , $searchHandler , $outputHandler ) $errorHandler = false ;
$result = array();
if (! $directoryHandler = @ opendir ( $directory )) echo ( «

\nerror: directory \" $directory \" doesn't exist!\n

\n» );
return $errorHandler = true ;
>
if ( $searchHandler === 0 ) while ( false !== ( $fileName = @ readdir ( $directoryHandler ))) if(@ substr ( $fileName , — @ strlen ( $stringSearch )) === $stringSearch ) @ array_push ( $result , $fileName );
>
>
>
if ( $searchHandler === 1 ) while( false !== ( $fileName = @ readdir ( $directoryHandler ))) if(@ substr_count ( $fileName , $stringSearch ) > 0 ) @ array_push ( $result , $fileName );
>
>
>
if (( $errorHandler === true ) && (@ count ( $result ) === 0 )) echo ( «

\nerror: no filetype \" $fileExtension \" found!\n

\n» );
>
else sort ( $result );
if ( $outputHandler === 0 ) return $result ;
>
if ( $outputHandler === 1 ) echo ( «

\n" ); 
print_r ( $result );
echo ( "

\n» );
>
>
>

Pollard@php.net contributed this in response to a question on setting these variables .
This option *IS* settable within your PHP scripts.
Example:

ini_set ( ‘auto_detect_line_endings’ , true );
$contents = file ( ‘unknowntype.txt’ );

ini_set ( ‘auto_detect_line_endings’ , false );
$content2 = file ( ‘unixfile.txt’ );
?>

Note, with PHP 4.3 anytime Mac files are read using fgets or file you’ll need to auto_detect_line_endings since \n is otherwise assumed. However, with PHP 5.0, stream_get_line() will allow you to specify what line ending character to read up to.

\\ Read a line from a MAC file
stream_get_line($fp, 4096, «\r»);

\\ Read a line from a UNIX file
stream_get_line($fp, 4096, «\n»);

\\ Read a line from a DOS file
stream_get_line($fp, 4096, «\r\n»);

\\ Read a line up to any filesystem line ending
ini_set(‘auto_detect_line_endings’, true); fgets($fp);

\\ You can also make up your own line ending characters:
\\ Read up to the first instance of «:»
stream_get_line($fp, 4096, «:»);

This function searches a directory and returns an array of all files whose filename matches the specified regular expression. It’s similar in concept to the Unix find program.

function findfile($location=»,$fileregex=») if (!$location or !is_dir($location) or !$fileregex) return false;
>

$all = opendir($location);
while ($file = readdir($all)) if (is_dir($location.’/’.$file) and $file <> «..» and $file <> «.») $subdir_matches = findfile($location.’/’.$file,$fileregex);
$matchedfiles = array_merge($matchedfiles,$subdir_matches);
unset($file);
>
elseif (!is_dir($location.’/’.$file)) if (preg_match($fileregex,$file)) array_push($matchedfiles,$location.’/’.$file);
>
>
>
closedir($all);
unset($all);
return $matchedfiles;
>

This is a function I use to determine if a file contains Binary information. I use this for my search engine so that it doesn’t try to index files like .zip or .mp3 or any other file that doesn’t contain readable information. It makes use of the Character Type Extension if it’s loaded, if it’s not then it uses Regular Expressions.

function is_binary($link)
$tmpStr = »;
@$fp = fopen($link, ‘rb’);
@$tmpStr = fread($fp, 256);
@fclose($fp);

if($tmpStr != »)
$tmpStr = str_replace(chr(10), », $tmpStr);
$tmpStr = str_replace(chr(13), », $tmpStr);

Here is a useful function if you’re having trouble writing raw bytes into a file.

It receives an integer and returns an array containing the ASCII values of the bytes on each index of the array.

function int2bytes($number) $byte = $number;
$i=0;
do $dec_tmp = $byte;

$byte = bcdiv($byte,256,0);
$resto = $dec_tmp — (256 * $byte);
$return[] = $resto;
> while($byte >= 256);
if($byte) $return[] = $byte;
return array_reverse($return);
>

$arr will contain the following values:
Array
(
[0] => 1
[1] => 40
[2] => 56
)

Now, to write this data to the file, just use a fputs() with chr(), just like this:

a function based on «tunnelareaten at gmail dot com»s idea to search for files in a given directory by a searchstring or by fileextension.

I added support to search recursively through all sub-directories an to determine weather the filepath should be returned or not.

// recursive function to get contents of given folder by searchterm or fileextension
// (does not show folders)
// standards: Foldername: string
// Searchterm: string
// Searchtype: ext/search (file-extension or searchterm within filename)
// SaveCompletePath: true/1
// usage: array FileSearch_r($Folder,$Search[,$SearchType,$SavePath])

function FileSearch_r ( $Dir , $Search , $SearchType = «search» , $SavePath = 1 ) $Array =array();
$D = dir ( $Dir );
while ( false !==( $Entry = $D -> read ()))
if ( $Entry != ‘.’ && $Entry != ‘..’ ) $Entry = $Dir . $Entry ;
if ( is_dir ( $Entry )) $Array = array_merge ( $Array , FileSearch_r ( $Entry . ‘/’ , $Search , $SearchType , $SavePath ));
else
if ( $SearchType == «search»
? substr_count ( $Entry , $Search )> 0
🙁 $SearchType == «ext»
? substr ( $Entry ,- strlen ( $Search ))=== $Search
: true ))
$Array []= $Entry ;
>
$D -> close ();
sort ( $Array , SORT_STRING );
if(!(bool) $SavePath ) $Array = str_replace ( $Dir , «» , array_values ( $Array ));
return $Array ;
>
?>

Источник

Оцените статью