这个问题有点复杂,但我会尽力解释清楚。如果我的问题不明白,请随时要求澄清。
:
在我的服务器上,每天都会有一个新的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"
}
- 将字符串解析为时间戳,然后将该字符串格式化为所需的格式。考虑使用
strtotime()
(http://us1.php.net/manual/en/function.strtotime.php)和date()
(http://us1.php.net/manual/en/function.date.php)。 - 为.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