我有一个文件users.txt,其中包含:
"ID" "Access" ;Expire>>26-08-2013<<
"ID" "Access" ;Expire>>27-08-2013<<
"ID" "Access" ;Expire>>28-08-2013<<
Run Code Online (Sandbox Code Playgroud)
我不想检查过期日期是否大于当前日期时间,如果是,我想在该行的开头添加分号或者只是删除该行.
我到目前为止写的代码如下:
$files = file('users.txt');
foreach ($files as $line) {
$pattern = '/>>(.*)<</';
preg_match($pattern, $line, $matches);
$expiredate = strtotime($matches[1]);
$currdate = strtotime(date('d-m-Y'));
if ($currdate > $expiredate) {
echo 'access expired... edit/delete the line<br/>';
} else {
echo 'do nothing, its ok -> switching to the next line...<br/>';
}
}
Run Code Online (Sandbox Code Playgroud)
它从文件中的每一行检索"过期日期".它还会检查它是否大于当前日期,但此时我不知道如何编辑(通过在开头添加分号)或删除满足条件的行.
有什么建议?
试试这个:
$files = file('users.txt');
$new_file = array();
foreach ($files as $line) {
$pattern = '/>>(.*)<</';
preg_match($pattern, $line, $matches);
$expiredate = strtotime($matches[1]);
$currdate = strtotime(date('d-m-Y'));
if ($currdate > $expiredate) {
// For edit
$line = preg_replace('/condition/', 'replace', $line); // Edit line with replace
$new_file[] = $line; // Push edited line
//If you delete the line, do not push array and do nothing
} else {
$new_file[] = $line; // push line new array
}
}
file_put_contents('users.txt', $new_file);
Run Code Online (Sandbox Code Playgroud)
如果要编辑该行,请使用preg_match并将已编辑的行推送到新数组.
如果要删除该行,请不执行任何操作.直接无视(好了.
如果要切换到下一行,请将当前行推送到新数组.
在最后保存new array到文件.