【问题标题】:PHP How to EDIT And Delete line in txt filePHP如何编辑和删除txt文件中的行
【发布时间】:2015-08-04 16:22:11
【问题描述】:

我有一个 CFG 文件,所以我需要编辑和删除行...我使用了此代码,但它不会替换行。

/* check if user exists */
$delete = "F: $username $password # { startdate=$today | enddate=$expired | info=$info | dealer=$dealer }";
$out = array();
while (($line = fgets($stream)) !== false) {
     if(trim($line) != $delete) {
        /* user already exists - we can edit it */
        $out[] = $line;
    }
}

/* write file */
$sftp = ssh2_sftp($con);
$stream = fopen("ssh2.sftp://$sftp/myurl/config/txtfile.cfg", 'w+') or die("can't open file");
flock($stream, LOCK_EX);
foreach($out as $line) {
    fwrite($stream, $line);
}
flock($stream, LOCK_UN);
fclose($stream);

我在那个 txt 文件中有 100 行,我用 ajax 发送了这个:

F: lolipop shugar # { startdate=2015-08-04 |结束日期=2016-08-04 |信息=信息 |经销商=当前经销商}

所以在写回 txt cfg 文件后,它需要写入 99 行,没有以 F: lolipop 开头的行...所以该行被删除(然后我可以实现编辑行...想法是删除行F:知道用户名,然后用新数据插入一个新的)

我试过这个...文件被正确读取到数组中,但文件没有写回 txt cfg 文件并进行更改...我有 txt cfg 文件,但 100 行未更改...有人可以发布解决方案吗?

谢谢

例子:

我在文件中:

F: user010 sdfsdfsdf # { startdate=$today | enddate=$expired | info=$info | dealer=$dealer }
F: huikkd rrrrr # { startdate=$today | enddate=$expired | info=$info | dealer=$dealer }
F: robot56 uxDtpNjf # { startdate=$today | enddate=$expired | info=$info | dealer=$dealer }

所以我想找线:

F: huikkd rrrrr # { startdate=$today | enddate=$expired | info=$info | dealer=$dealer }

并将其编辑为:

F: huikkd changedpassword # { startdate=$today | enddate=$expired | info=$info | dealer=$dealer }

并将其写回cfg文件..我通过ssh2连接将文件保存在服务器上

【问题讨论】:

    标签: php file edit


    【解决方案1】:

    您将能够编辑 cfg 文件的任何行。不要删除\n。只需编辑\n 之前的文本即可。希望这段代码会有所帮助:

    <?php
    $line=file('text.cfg',FILE_SKIP_EMPTY_LINES);
    $line[4]="jhasrd ady"."\n";//This will edit line 4 with text jhasrd ady
    $content=implode('',$line);
    file_put_contents('text.cfg',$content);
    

    【讨论】:

    • 谢谢...但我需要编辑整行...因为您在示例中看到我需要更改以下参数:[code]F: $username $password # { startdate= $今天|结束日期=$过期 |信息=$信息 |经销商=$dealer }[/code]
    • @user2631534 代码将更新整个行号 4
    • @user2631534 如果你想传递变量值,你可以。因为我使用了双引号。
    • 为什么不呢?我的意思是你真正想要达到的目标?
    • 感谢您帮助我...我想编辑行..示例我将放弃问题
    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多