Как открыть файл и удалить последнюю строку?

Я надеюсь открывать файл, захватывать последнюю строку в файле где строка ="?>", который является закрывающим тэгом для php документа. Чем я желаю добавить данные в него и включить назад"?>" к самой последней строке.

Я пробовал несколько подходов, но у меня нет удачи.

Вот то, что я получил до сих пор, поскольку я читаю из zip-файла. Хотя я знаю, что это неправильно, просто нуждается в некоторой помощи с этим...

// Open for reading is all we can do with zips and is all we need.
if (zip_entry_open($zipOpen, $zipFile, "r"))
{
    $fstream = zip_entry_read($zipFile, zip_entry_filesize($zipFile));
    // Strip out any php tags from here.  A Bit weak, but we can improve this later.
    $fstream = str_replace(array('?>', '<?php', '<?'), '', $fstream) . '?>';

    $fp = fopen($curr_lang_file, 'r+');

    while (!feof($fp))
    {
        $output = fgets($fp, 16384);
        if (trim($output) == '?>')
            break;
    }

    fclose($fp);
    file_put_contents($curr_lang_file, $fstream, FILE_APPEND);
}

$curr_lang_file строка filepath в фактический файл, которому нужно было добавить fstream к ней, но после того, как мы удаляем последнюю строку, которая равняется'?>'

Хорошо, я на самом деле внес несколько изменений, и это, кажется, работает, НО это теперь копирует данные там дважды... arggg, таким образом, каждая строка в файле теперь там 2 раза :(

Хорошо, удаленный fwrite, хотя теперь это добавляет его внизу, чуть ниже?>

OMG, мне просто нужно все до последней строки, нет ли способ сделать это??? Мне не нужно"?>"

1
задан SoLoGHoST 26 April 2010 в 07:40
поделиться

3 ответа

Он копирует каждую строку дважды, потому что ваша строка говорит:

 @fwrite($fp, $output);

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

0
ответ дан 3 September 2019 в 01:01
поделиться

Я бы добавил новый после последней строки ...

Или, если у вас есть новый PHP-код, который нужно добавить в $ code , это можно сделать с помощью регулярного выражения

$ output = preg_replace ('\?>', '?>'. $ code, $ output)

0
ответ дан 3 September 2019 в 01:01
поделиться

Простой способ работы с файлом в файловой системе:

<?php

$path = "file.txt";
$content = file($path); // Parse file into an array by newline
$data = array_pop($content);

if (trim($data) == '?>') {
    $content[] = 'echo "... again";';
    $content[] = "\n$data";
    file_put_contents($path, implode($content));
}

Что делает..

$ cat file.txt 
<?php
echo 'Hello world';
?>
$ php test.php 
$ cat file.txt 
<?php
echo 'Hello world';
echo "... again";
?>
2
ответ дан 3 September 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: