繁体   English   中英

PHP-编辑/删除文件中的特定行

[英]PHP - Edit/Delete particular line in a file

我有一个文件users.txt ,其中包含:

"ID" "Access" ;Expire>>26-08-2013<<
"ID" "Access" ;Expire>>27-08-2013<<
"ID" "Access" ;Expire>>28-08-2013<<

我不会检查Expire日期是否大于当前日期时间,如果是,我想在该行的开头添加分号或直接删除该行。

我到目前为止为此编写的代码如下:

$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/>';
    }

 }

它从文件的每一行中检索“到期日期”。 它还会检查它是否大于当前日期,但目前我不知道如何编辑(通过在开头添加分号)或删除满足条件的行。

有什么建议么?

像这样尝试:

$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);

如果要编辑该行,请使用preg_match并将已编辑的行推入新数组。

如果要删除该行,则什么也不做。 直接无视(好了。

如果要切换到下一行,请将当前行推送到新阵列。

最后,将new array保存到文件。

基本过程是:

open main file in readonly mode
open secondary (temp) file in writeonly mode
Loop: readline from main file
   process the line
   save to secondary file
until end of file
close both files
delete the main file
rename the secondary file.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM