Difference between revisions of "PHP/file/name"

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< PHP‎ | file
Jump to navigation Jump to search
Line 3: Line 3:
 
PHP's functionality for managing folders is a mix of classes and standalone functions.
 
PHP's functionality for managing folders is a mix of classes and standalone functions.
  
To get a directory listing:
+
Any of the following can be used to get a directory listing:
* {{fmt/code|dir()}} accepts a [[filepath]] to an existing folder and returns a {{fmt/code|Directory}} object.
+
* {{fmt/code|dir()}} accepts a [[filepath]] to an existing folder and returns a {{fmt/code|Directory}} object, which can be iterated through to get the listing.
 +
** Sorting must be done after retrieving all the files.
 +
** It seems ''likely'' (I haven't tested this) that the iteration process is atomic by file, i.e. it will return from listing one file even if the directory is damaged and the next one cannot be read.
 
* [https://www.php.net/manual/en/function.glob.php {{fmt/code|glob()}}] accepts a [[filespec]] that includes a [[file mask]], and returns a list of matching [[filespec]]s.
 
* [https://www.php.net/manual/en/function.glob.php {{fmt/code|glob()}}] accepts a [[filespec]] that includes a [[file mask]], and returns a list of matching [[filespec]]s.
 
** A file mask in this context can be e.g. {{fmt/code|*.php}} or {{fmt/code|/home/woozle/*.php}} but not {{fmt/code|~/*.php}}.
 
** A file mask in this context can be e.g. {{fmt/code|*.php}} or {{fmt/code|/home/woozle/*.php}} but not {{fmt/code|~/*.php}}.
 
** The {{fmt/code|*}} and {{fmt/code|?}} wildcards are both recognized.
 
** The {{fmt/code|*}} and {{fmt/code|?}} wildcards are both recognized.
 
** The mask may include multiple wildcards, for folders as well as files. '''Example''': {{fmt/code|/b*/b*}} will return all files beginning with b inside root-level folders beginning with b.
 
** The mask may include multiple wildcards, for folders as well as files. '''Example''': {{fmt/code|/b*/b*}} will return all files beginning with b inside root-level folders beginning with b.
 +
* [https://www.php.net/manual/en/function.scandir.php {{fmt/code|scandir()}}]  accepts a [[filepath]] to an existing folder and returns an array of files found in the given folder. By default, they are sorted alphabetically.
  
To parse a [[filespec]]:
+
The following functions can parse a [[filespec]] in various ways:
 
* [https://www.php.net/manual/en/function.basename.php {{fmt/code|basename()}}] returns the last element of a filespec, with some options.
 
* [https://www.php.net/manual/en/function.basename.php {{fmt/code|basename()}}] returns the last element of a filespec, with some options.
 
* [https://www.php.net/manual/en/function.dirname.php {{fmt/code|dirname()}}] returns the filepath to the given file/folder's parent folder.
 
* [https://www.php.net/manual/en/function.dirname.php {{fmt/code|dirname()}}] returns the filepath to the given file/folder's parent folder.

Revision as of 22:05, 20 June 2022

PHP filesystem access functionality
folders/directories and file metadata

About

PHP's functionality for managing folders is a mix of classes and standalone functions.

Any of the following can be used to get a directory listing:

  • «dir()» accepts a filepath to an existing folder and returns a «Directory» object, which can be iterated through to get the listing.
    • Sorting must be done after retrieving all the files.
    • It seems likely (I haven't tested this) that the iteration process is atomic by file, i.e. it will return from listing one file even if the directory is damaged and the next one cannot be read.
  • «glob()» accepts a filespec that includes a file mask, and returns a list of matching filespecs.
    • A file mask in this context can be e.g. «*.php» or «/home/woozle/*.php» but not «~/*.php».
    • The «*» and «?» wildcards are both recognized.
    • The mask may include multiple wildcards, for folders as well as files. Example: «/b*/b*» will return all files beginning with b inside root-level folders beginning with b.
  • «scandir()» accepts a filepath to an existing folder and returns an array of files found in the given folder. By default, they are sorted alphabetically.

The following functions can parse a filespec in various ways:

  • «basename()» returns the last element of a filespec, with some options.
  • «dirname()» returns the filepath to the given file/folder's parent folder.
  • «pathinfo()» breaks a filespec down into multiple components.
  • «realpath()» returns a de-contextualized canonical absolute filespec.

Related

  • file: file access functions

Reference