如何在服务器上读取所有现有的CSV文件


How to I read all existing CSV files on a server?

这个问题有点复杂,但我会尽力解释清楚。如果我的问题不明白,请随时要求澄清。

:

在我的服务器上,每天都会有一个新的CSV文件添加到特定的文件夹中。CSV文件将全部保存在同一文件夹中。他们将有一个与日期一致的名字。例如log_2013_05_24.csv

目的:

我需要写一个PHP程序,将找到所有现有的CSV文件,以便我可以通过它们搜索。最后,我需要找到所有存在的日期。

CSV文件中的数据如下所示:

4/14/13, 17:30:56, data, data, data, data
4/14/13, 17:31:06, data, data, data, data 
( ... about 10,000 of these ^ a new line for every 10 seconds all day )

我使用php爆炸从我当前的CSV文件获取日期。这将产生一个类似于:'4/14/13'的字符串数组。

但是有两个问题:

1:它们是字符串,不是日期

2:我不知道如何找到所有现有的CSV文件,以便PHP可以搜索它们。

使用DateTime类创建日期

$str = '04/14/13';
$date = new DateTime($str);
echo $date->format('Y-m-d');

使用glob()函数遍历文件系统

$files = glob('*.csv');
var_dump(files);
样本输出:

array(3) {
  [0]=>
  string(8) "test.csv"
  [1]=>
  string(9) "test1.csv"
  [2]=>
  string(9) "test2.csv"
}
  1. 将字符串解析为时间戳,然后将该字符串格式化为所需的格式。考虑使用strtotime() (http://us1.php.net/manual/en/function.strtotime.php)和date() (http://us1.php.net/manual/en/function.date.php)。
  2. 为.csv (grep -l *.csv /path/to/dir)结尾的文件创建一个bash脚本和grep,这是一个小写的l,查看man文件了解更多信息。

注意:这只是一个暗示性的答案,我不带走peterm's的答案,或其他任何人的

如果我可以添加,这将读取并列出所有CSV文件从一个集合文件夹,减去扩展名。

当然,这可以很容易地修改,以显示文件的扩展名。

<?php
// You can add any other functions here such as file creation, etc.
$dir = 'csv_folder'; // The directory containing the files. 
$ext = '.csv'; // The file extension. 
?> 
<ul>
<?php foreach (glob($dir . '/*' . $ext) as $file) { ?> 
<li>
<a href="<?php echo "/" . $file ?>"><?php echo basename($file, $ext); ?></a>
</li>
<?php } ?>
</ul>

要显示文件的扩展名,只需更改这一行:

<a href="<?php echo "/" . $file ?>"><?php echo basename($file, $ext); ?></a>

<a href="<?php echo "/" . $file ?>"><?php echo basename($file); ?></a>
删除, $ext