繁体   English   中英

替换或删除txt文件中的行

[英]replace or delete line in txt file

comm.php

<?
$com = $req_user_info['comments'];
$name = $username;

if($_POST) {
$postdate = date("d M y h:i A");
$content = $_POST['commentContent'];
$handle = fopen("$com","a");
fwrite($handle,"<b>" . $name . "</b>:<br>" . $content . "<br>" . $postdate . "<br>"); 
fclose($handle);}
?>

<html>
<body>
<form action = "" method = "POST">
Post a Comment<br><textarea rows="10" cols="30" name="commentContent"></textarea><br>
<input type="submit" value="Comment"><p>
Comments<p>
<? 
include($com);
?>
</body></html>

/*$req_user_info['comments']; = data.txt*/

data.txt

Alex: sometext 20 Feb 12 11:11 AM
Alex: sometext 20 Feb 12 11:38 AM

我想做的是删除(或不添加任何内容)名称,内容和发布日期。

例:

Alex:sometext 20 Feb 12 11:11 AM删除

Alex:sometext 20 Feb 12 11:38 AM删除

因此,在单击删除并刷新页面后,我希望该行消失。

您可以使用fgets逐行读取( http://www.php.net/manual/en/function.fgets.php ),而不仅仅是正常地包含文件。 不过,请在迭代时存储每个行号,然后在删除链接上传递该行号。

<a href="page.php?delete=XXX">Delete</a>

然后,当您要删除时,只需遍历每一行并重写文件,就可以跳过删除链接变量$ _GET ['delete']给出的行。 只需确保在编写每一行时都在计数,就可以知道何时跳过一行。

使用PHP示例:

<?php
    $counter = 0;
    $handle = @fopen("/tmp/inputfile.txt", "r");
    if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        $counter++;
        echo $buffer . '<a href="page.php?delete='.$counter.'">delete</a>';
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}
?>

暂无
暂无

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

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