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.
Filesystem Funzioni
Vedere anche:
For related functions, see also the Directory and Program Execution sections.
For a list and explanation of the various URL wrappers that can be used as remote files, see also List of Supported Protocols/Wrappers.
Indice dei contenuti
- basename — Restituisce il nome del file dal percorso indicato
- chgrp — Cambia il gruppo del file
- chmod — Cambia le impostazioni del file
- chown — Cambia il proprietario del file
- clearstatcache — Libera la cache dello stato di un file
- copy — Copia un file
- delete — Vedere unlink oppure unset
- dirname — Restituisce il nome della directory dal percorso indicato
- disk_free_space — Restituisce lo spazio disponibile nella directory
- disk_total_space — Restituisce lo spazio totale di una directory
- diskfreespace — Alias di disk_free_space
- fclose — Chiude un puntatore a file aperto
- feof — Verifica se è stata raggiunta la fine del file su un puntatore a file
- fflush — Invia l'output in un file
- fgetc — Prende un carattere da un puntatore a file
- fgetcsv — Prende una riga da un puntatore a file e l'analizza in cerca di campi CSV
- fgets — Prende una riga da un puntatore a file
- fgetss — Prende una riga da un puntatore a file ed elimina i tag HTML
- file_exists — Controlla se un file o directory esiste
- file_get_contents — Legge un file all'interno di una stringa
- file_put_contents — Write a string to a file
- file — Legge l'intero file in un vettore
- fileatime — Prende l'ora dell'ultimo accesso al file
- filectime — Prende l'ora in cui l'inode del file è stato modificato
- filegroup — Restituisce il gruppo di un file
- fileinode — Restituisce il numero di inode del file
- filemtime — Restituisce l'ora delle modifiche al file
- fileowner — Restituisce il proprietario del file
- fileperms — Restituisce i permessi sui file
- filesize — Restituisce la dimensione del file
- filetype — Restituisce il tipo di file
- flock — Sistema di bloccaggio file
- fnmatch — Match filename against a pattern
- fopen — Apre un file o un URL
- fpassthru — Invia tutti i dati rimanenti su un puntartore a file
- fputcsv — Format line as CSV and write to file pointer
- fputs — Alias di fwrite
- fread — Legge un file salvaguardando la corrispondenza binaria
- fscanf — Analizza l'input da un file secondo un determinato formato
- fseek — Sposta un puntatore sul file
- fstat — Restituisce le informazioni riguardanti un file attraverso un puntatore al file aperto
- ftell — Comunica la posizione di lettura/scrittura del puntatore al file
- ftruncate — Tronca un file alla lunghezza data
- fwrite — Scrive un file salvaguardando la corrispondenza binaria
- glob — Find pathnames matching a pattern
- is_dir — Dice se la stringa corrisponde ad una directory
- is_executable — Dice se il file indicato è eseguibile
- is_file — Dice se il file è un file regolare
- is_link — Dice se il file è un link simbolico
- is_readable — Dice se un file è leggibile
- is_uploaded_file — Dice se un file fù caricato via HTTP POST.
- is_writable — Dice se un file è scrivibile
- is_writeable — Alias di is_writable
- lchgrp — Changes group ownership of symlink
- lchown — Changes user ownership of symlink
- link — Crea un hard link
- linkinfo — Restituisce informazioni su un collegamento
- lstat — Da informazioni su un file o un link simbolico
- mkdir — Crea una directory
- move_uploaded_file — Muove un file caricato in una nuova posizione
- parse_ini_file — Legge il file di configurazione
- pathinfo — Restituisce informazioni su un percorso di file
- pclose — Chiude un puntatore ad un file di processo
- popen — Apre un puntatore ad un file di processo
- readfile — Invia un file
- readlink — Restituisce il target di un link simbolico
- realpath — Restituisce un percorso assoluto regolare
- rename — Rinomina un file o una directory
- rewind — Riavvolge la posizione di un puntatore a file
- rmdir — Rimuove una directory
- set_file_buffer — Alias di stream_set_write_buffer
- stat — Da informazioni su un file
- symlink — Crea un link simbolico
- tempnam — Crea file con unico nome file
- tmpfile — Crea un file temporaneo
- touch — Imposta l'ora di modifica di un file
- umask — Cambia l'umask corrente
- unlink — Cancella un file
Filesystem Funzioni
Christian
17-Mar-2007 07:24
17-Mar-2007 07:24
tunnelareaten at gmail dot com
25-Feb-2005 06:27
25-Feb-2005 06:27
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]);
<?php
function list_files($directory, $stringSearch, $searchHandler, $outputHandler) {
$errorHandler = false;
$result = array();
if (! $directoryHandler = @opendir ($directory)) {
echo ("<pre>\nerror: directory \"$directory\" doesn't exist!\n</pre>\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 ("<pre>\nerror: no filetype \"$fileExtension\" found!\n</pre>\n");
}
else {
sort ($result);
if ($outputHandler === 0) {
return $result;
}
if ($outputHandler === 1) {
echo ("<pre>\n");
print_r ($result);
echo ("</pre>\n");
}
}
}
?>
http://iubito.free.fr
30-Dec-2003 02:39
30-Dec-2003 02:39
Here is a function I wrote to get the relative path between 2 files or directory.
We suppose that paths are wrotten in Unix format (/ instead of windows \\)
<?php
/**
* Return the relative path between two paths / Retourne le chemin relatif entre 2 chemins
*
* If $path2 is empty, get the current directory (getcwd).
* @return string
*/
function relativePath($path1, $path2='')
{
if ($path2 == '') {
$path2 = $path1;
$path1 = getcwd();
}
//Remove starting, ending, and double / in paths
$path1 = trim($path1,'/');
$path2 = trim($path2,'/');
while (substr_count($path1, '//')) $path1 = str_replace('//', '/', $path1);
while (substr_count($path2, '//')) $path2 = str_replace('//', '/', $path2);
//create arrays
$arr1 = explode('/', $path1);
if ($arr1 == array('')) $arr1 = array();
$arr2 = explode('/', $path2);
if ($arr2 == array('')) $arr2 = array();
$size1 = count($arr1);
$size2 = count($arr2);
//now the hard part :-p
$path='';
for($i=0; $i<min($size1,$size2); $i++)
{
if ($arr1[$i] == $arr2[$i]) continue;
else $path = '../'.$path.$arr2[$i].'/';
}
if ($size1 > $size2)
for ($i = $size2; $i < $size1; $i++)
$path = '../'.$path;
else if ($size2 > $size1)
for ($i = $size1; $i < $size2; $i++)
$path .= $arr2[$i].'/';
return $path;
}
?>
Enjoy ! :-)
Gregor Mosheh
23-Aug-2003 03:23
23-Aug-2003 03:23
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;
}
$matchedfiles = array();
$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;
}
$htmlfiles = findfile('/some/dir','/\.(htm|html)$/');
Gregor Mosheh
17-Jul-2003 08:25
17-Jul-2003 08:25
I needed a function to find disk usage for a directory and its subs, so here it is. It's kinda like the Unix du program, except it returns the usage in bytes, not blocks.
function du($location) {
if (!$location or !is_dir($location)) {
return 0;
}
$total = 0;
$all = opendir($location);
while ($file = readdir($all)) {
if (is_dir($location.'/'.$file) and $file <> ".." and $file <> ".") {
$total += du($location.'/'.$file);
unset($file);
}
elseif (!is_dir($location.'/'.$file)) {
$stats = stat($location.'/'.$file);
$total += $stats['size'];
unset($file);
}
}
closedir($all);
unset($all);
return $total;
}
print du('/some/directory');
l_domenech at yahoo dot ca
03-Jul-2003 08:25
03-Jul-2003 08:25
In the code samples of the user-contributed notes, you'll find functions that sometimes need a slash at the end of a folder path and sometimes don't.
Here's a little function to append a slash at the end of a path if there isn't one already.
function append_slash_if_none($string)
{
if (ereg ("/$", $string))
{
return $string;
}
else
{
return ereg_replace("$", "/", $string);
}
}
(Replace with a backslash if you're on Windows...)
mitra at mitra dot biz
16-May-2003 08:10
16-May-2003 08:10
Pollard@php.net contributed this in response to a question on setting these variables ...
This option *IS* settable within your PHP scripts.
Example:
<?php
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, ":");
regis at webstuff dot com dot br
03-Apr-2003 06:49
03-Apr-2003 06:49
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);
}
Example:
$arr = int2bytes(75832);
$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:
fputs($fp,chr($arr[0]).chr($arr[1]).chr($arr[2]))
-- Regis
jdhurn at uberidx dot com
08-Mar-2003 05:18
08-Mar-2003 05:18
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);
$tmpInt = 0;
for($i =0; $i < strlen($tmpStr); $i++)
{
if( extension_loaded('ctype') )
{
if( !ctype_print($tmpStr[$i]) )
$tmpInt++;
}
else
{
if( !eregi("[[:print:]]+", $tmpStr[$i]) )
$tmpInt++;
}
}
if($tmpInt > 5)
return(0);
else
return(1);
}
else
return(0);
}
