Удаление строк в php? Это возможно? - PullRequest
1 голос
/ 17 августа 2011

Я изо всех сил пытался создать простую (действительно простую) систему чата для моего сайта, так как мои знания по Javascripting / AJAX ограничены после сбора ресурсов и помощи от многих добрых людей, которым я смог создать свою простую систему чата, но ушел содна проблема.

Сообщения отправляются в файл с именем «msg.html» в следующем формате: <p><span id="name">$name</span><span id="Msg">$message</span></p> И затем, используя PHP и AJAX, я мгновенно извлекаю сообщения из файла с помощью file ();function и цикл foreach () {} внутри PHP, вот код:

    <?php 
$file = 'msg.html';
$data = file($file);
$max_lines = 20;
if(count($data) > $max_lines){
    // here i want the data to be deleted from oldest until i only have 20 messages left.
}
foreach($data as $line_num => $line){
echo $line_num . " . " . $line; 
}
?>

Мой вопрос: как мне удалить самые старые сообщения, чтобы у меня остались только последние 20 сообщений?

Ответы [ 3 ]

1 голос
/ 17 августа 2011

Как вам кажется что-то подобное:

$file = 'msg.html';
$data = file($file);
$max_lines = 20;
foreach($data as $line_num => $line)
{
    if ($line_num < $max_lines)
    {
        echo $line_num . " . " . $line; 
    }
    else
    {
        unset($data[$line_num]);
    }
}
file_put_contents('msg.html', $data);
?>

http://www.php.net/manual/en/function.file-put-contents.php для получения дополнительной информации:)

0 голосов
/ 17 августа 2011

Это называется циклическим перебором, если я правильно помню.

Насколько я знаю, вы не можете удалить произвольные части файла.Вам необходимо перезаписать файл новым содержимым (или создать новый файл и удалить старый).Вы также можете хранить сообщения в отдельных файлах, но, конечно, для чтения требуется до $max_lines файлов.

Вам также следует использовать flock () , чтобы избежать повреждения данных.В зависимости от платформы это не на 100% надежно, но лучше, чем ничего.

0 голосов
/ 17 августа 2011

Полагаю, вы можете прочитать файл, разбить его на массив, отрубить все, кроме последних 20 полей, и записать его обратно в файл, переписав старое ... Возможно, не лучшее решение, но то, которое приходит на ум, еслиВы действительно не можете использовать базу данных, как предложил Делан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...