Skip to main content

PHP script to list files in a given directory using opendir, readdir and glob functions



PHP script to list files in a given directory

The below given script goes through a given directory and list the name of the files in the order as it is stored in the file system.

The first script uses a directory handler to operate on a given directory. It opens the handler, reads file entries one by one by looping through the directory (during this step you can process the file ) and finally close the handler


// Source folder - Folder from where you want to list records
$path = "YourFolder/";

//Create and Open directory handle
if ($handle = opendir($path)) {

//Read entry from directory handle
while (false !== ($file = readdir($handle))) {

// do something with the file

if ('.' === $file)
continue;
elseif ('..' === $file)
continue;
else
echo("<a href='".$path.$file."'>".$file."</a> Last updated on: ".date("M d Y h:i A", filectime($path.$file))."<br/>");


}

//Close directory handle
closedir($handle);
}



opendir($path) : opendir() Opens a directory handler. This handler is used by directory specific functions like readdir(), closedir() etc.
readdir($handle) : readdir() reads each entry in the folder using the directory handle opened by opendir(). using a while loop we can iterate the directory and list the files
closedir($handle): closedir() closes the directory handle opened by opendir()


Directory looping using GLOB function

The above given function is rewritten by using glob function:

// Source folder - Folder from where you want to list records
$path = "YourFolder/";

$files = glob( $path."*.*" ); // to avoid hidden files by using a pattern match

// display the file names if there are any contents in the folder
if(count($files)){

for( $i=0 ; $i < count($files) ; $i++ ){
echo("<a href='".$file[$i]."'>".str_replace($path,"",$files[$i])."</a> Last updated on: ".date("M d Y h:i A", filectime($files[$i]))."<br/>");
}

}



How glob() can replace opendir() ?
glob() returns an array of file names which matches the given the string pattern. Loop through the file array to list the records.


Display Files in a directory based on last modified date
If you want to sort and list the filenames based on the last updated date add a small statement to the above mentioned code:

// Source folder - Folder from where you want to list records
$path = "YourFolder/";

$files = glob( $path."*.*" ); // to avoid hidden files by using a pattern match

// Sort files by modified time, latest to oldest
array_multisort(array_map( 'filemtime', $files ),SORT_NUMERIC,SORT_DESC,$files);


// display the file names if there are any contents in the folder
if(count($files)){

for( $i=0 ; $i < count($files) ; $i++ ){
echo("<a href='".$file[$i]."'>".str_replace($path,"",$files[$i])."</a> Last updated on: ".date("M d Y h:i A", filectime($files[$i]))."<br/>");
}

}

array_map() — Applies the callback to the elements of the given arrays. This function returns an array containing all the elements of array1 after applying the callback function to each one.
array_multisort — Sort multiple or multi-dimensional arrays. It can be used to sort several arrays at once, or a multi-dimensional array by one or more dimensions.


Popular posts from this blog

Payback Points - How to redeem - How to merge multiple payback accounts - Block Payback card - Payback customer care

How to apply for a new ration card and what are the documents required?

List of documents required for new ration card application in Kerala and how to apply


Application for a new ration card should be addressed to Taluk Supply Officer (TSO) / City Rationing Officer (CRO) of applicant's residing area.

Primary document required are Residence certificate, Income certificate and incase the applicant's name is in another ration card then he/she should submit the reduction certificate ontained from previous TSO / CRO as proof for removing his/her name from old Ration card.

You can get the new application from your currently residing Taluk Supply Office.

Your SBI Debit card ending with XX0000 is deactivated only for Internet txn.

SBI account holders may have received an SMS with following message, supposed to be from State Bank of India (SBI).

Your SBI Debit card ending with XX0000  is deactivated only for Internet txn. To activate send SMS "SWON ECOM 0000" to 09223966666. No change for ATM/POS usage
** Replace the four Zeros with last 4 digits of your debit card number

Recently many of the SBI account holder has losed their money due to a hi-tech ATM robbery which happened in Thiruvananthapuram, capital city of Kerala.


Urgent Openings for PHP trainees, Andriod / IOS developers and PHP developers in Kochi Trivandrum Calicut and Bangalore. Please Send Your updated resumes to recruit.vo@gmail.com   Read more »
Member
Search This Blog