user2315354
user2315354

Reputation: 13

Retrieving contents of several files in directory PHP

I need to get the contents of several files within a directory but which is the best way of doing this?

I am using

$data = file_get_contents('./files/myfile.txt');

but I want every file without having to specify the file individually as above.

Upvotes: 0

Views: 1391

Answers (3)

Baba
Baba

Reputation: 95101

You can use glob to get particular file extention and file_get_contents to get the content

$content = implode(array_map(function ($v) {
    return file_get_contents($v);
}, glob(__DIR__ . "/files/*.txt")));

Upvotes: 1

Thanasis Pap
Thanasis Pap

Reputation: 2051

You can dir the directory and loop through it to get the contents of all files.

    <?php
    $path = './files';
    $d = dir($path);
    $contents = '';
    while (false !== ($entry = $d->read())) {
       if (!($entry == '..' || $entry == '.')) {
           $contents .= file_get_contents($path.'/'.$entry);
       }
    }
    $d->close();
    ?>

If you only want .txt files you can change the if statement of the code above from:

    if (!($entry == '..' || $entry == '.')) {

to:

    if (substr($entry, -4) == '.txt') {

This will result to a variable $contents that is type string and has all the contents of all the files (or only txt files if you select the 2nd solution) that are in the ./files dir.

Upvotes: 1

William Buttlicker
William Buttlicker

Reputation: 6000

/** 
* Change the path to your folder. 
* This must be the full path from the root of your 
* web space. If you're not sure what it is, ask your host. 
* 
* Name this file index.php and place in the directory. 
*/ 
    // Define the full path to your folder from root 
    $path = "/home/content/s/h/a/shaileshr21/html/download"; 

    // Open the folder 
    $dir_handle = @opendir($path) or die("Unable to open $path"); 

    // Loop through the files 
    while ($file = readdir($dir_handle)) { 

        $data = file_get_contents('$filet'); 

    } 
    // Close 
    closedir($dir_handle); 

Upvotes: 1

Related Questions