заменить или удалить строку в текстовом файле - PullRequest
0 голосов
/ 20 февраля 2012

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

Что я хочу сделать, это удалить (или заменить ничем) имя, содержимое и дату.

Пример:

Алекс: sometext 20 февр. 12 11:11 Удалить

Алекс: sometext 20 фев. 12 11:38 Удалить

Итак, после нажатия кнопки «Удалить» иобновите страницу, я хочу, чтобы строка пропала.

1 Ответ

0 голосов
/ 20 февраля 2012

Вместо обычного включения файла, вы можете использовать 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);
}
?>
...