duanche8554 2013-08-27 01:39
浏览 24
已采纳

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

I have a file users.txt which contains:

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

I wan't to check if the Expire date is greater than current datetime, and if so I want to add a semicolon at the begin of that line or simply delete that line.

The code i wrote so far for that is following:

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

 }

It retrieves the 'expire date' from every single line from file. It also checks if it's greater than current date but at this point i don't know how to edit (by adding semicolon at the begin) or delete the line which satisfy the condition.

Any suggestions?

  • 写回答

2条回答 默认 最新

  • duanmianzhou5353 2013-08-27 01:59
    关注

    Try like this one:

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

    If you want to edit that line, use preg_match and push edited line to new array.

    If you want to delete that line, do nothing. Just ignore.

    If you want switching to the next line, push currently line to new array.

    At final save new array to file.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部