0

我需要在一个目录中获取多个文件的内容,但这是最好的方法吗?

我在用

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

但我想要每个文件,而不必像上面那样单独指定文件。

4

3 回答 3

1

您可以 dir 目录并循环访问它以获取所有文件的内容。

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

如果您只想要 .txt 文件,您可以更改上面代码的 if 语句:

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

至:

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

这将产生一个变量 $contents ,它是字符串类型,并且包含 ./files 目录中的所有文件(或者只有 txt 文件,如果您选择第二种解决方案)的所有内容。

于 2013-04-24T12:20:49.443 回答
1
/** 
* 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); 
于 2013-04-24T12:18:13.800 回答
1

您可以使用glob来获取特定的文件扩展名并file_get_contents获取内容

$content = implode(array_map(function ($v) {
    return file_get_contents($v);
}, glob(__DIR__ . "/files/*.txt")));
于 2013-04-24T12:28:17.243 回答