我在目录中有100个文本文件。
文件名格式为abcd_2011_04_20.txt
我只需要阅读TODAY的文件和过去7天的文件。我该怎么办呢? 编辑1:
我已经有了一个函数dirTxt(dirname),它将文件名作为数组返回。如何识别当前日期的相应文件?然后获取前7天的文件?
编辑2:
数组返回以下内容
'graph.txt' 'graph1.txt' 'abcd_2011-04-12.txt' 'abcd_2011-04-13.txt' 'abcd_2011-04-24.txt' 'abcd_2011-04-15.txt' 'abcd_2011-04-16.txt' 'abcd_2011-04-17.txt' 'abcd_2011-04-18.txt' 'abcd_2011-04-19.txt' 'abcd_2011-04-20.txt'
答案 0 :(得分:1)
我制作了一个帮助函数,以防你需要在某个地方再次使用它。如果没有,您可以轻松地将其代码放在循环体内。
function getFileName($unixTime) {
return 'abcd_' . date('Y_m_j', $unixTime) . '.txt';
}
$files = array();
foreach(range(0, 6) as $dayOffset) {
$files[] = getFileName(strtotime('-' . $dayOffset . ' day'));
}
var_dump($files)
array(7) {
[0]=>
string(19) "abcd_2011_04_21.txt"
[1]=>
string(19) "abcd_2011_04_20.txt"
[2]=>
string(19) "abcd_2011_04_19.txt"
[3]=>
string(19) "abcd_2011_04_18.txt"
[4]=>
string(19) "abcd_2011_04_17.txt"
[5]=>
string(19) "abcd_2011_04_16.txt"
[6]=>
string(19) "abcd_2011_04_15.txt"
至于阅读它们,只需循环......
foreach($files as $file) {
if ( ! is_file($file)) {
continue;
}
$contents = file_get_contents($file);
}
答案 1 :(得分:1)
$dt = time(); // today... or use $dt = strtotime('2010-04-20'); to set custom start date.
$past_days = 7; // number of past days
$filesindir = dirTxt('your_dir');
for ($i=0; $i<=$past_days; $i++) {
$filename = 'abcd_' . date('Y_m_d', $dt) . '.txt';
$files[] = $filename;
$dt = strtotime('-1 day', $dt);
}
$files = array_intersect($filesindir, $files);
print_r($files);
Array
(
[0] => abcd_2011_04_21.txt
[1] => abcd_2011_04_20.txt
[2] => abcd_2011_04_18.txt
[3] => abcd_2011_04_15.txt
)
答案 2 :(得分:0)
解析文件名中的日期并将其与今天的日期进行比较。
PHP有string manipulation functions和date/time functions。
<?php
function isWithinLastSevenDays($str) {
$pos = strpos($str, "_");
if ($pos === FALSE)
throw new Exception("Invalid filename format");
$str = str_replace('_', '-', substr($str, $pos+1, strlen($str)-$pos-1-4));
$d1 = new DateTime($str);
$d2 = new DateTime();
$d2->modify('-7 days'); // sub() only since PHP 5.3
return ($d2 < $d1);
}
$str = "abcd_2011_04_20.txt";
var_dump(isWithinLastSevenDays($str));
$str = "abcd_2011_04_10.txt";
var_dump(isWithinLastSevenDays($str));
/*
Output:
bool(true)
bool(false)
*/
?>
答案 3 :(得分:0)
$filename = 'abcd_' . date('Y_m_d') . '.txt';
if (!file_exists($filename)) {
die("File $filename does not exist");
}
$contents = file_get_contents($filename);
使用date('Y_m_d', strtotime('-2 days'))
获取其他日期。