Bir dosyayı açmak ve son satırı nasıl kaldırılır?

3 Cevap php

Ben, bir dosyayı açmak, bir php belge için kapanış etiketi hat = ">" dosyasında son satırı, kapmak için arıyorum. Ben içine veri ekleme ve son satıra ">" geri eklemek isteyen ediyorum daha.

Ben birkaç yaklaşım çalışıyorum, ama ben herhangi bir şans sahip değilim.

Burada bir zip dosyası okuyorum ben, şimdiye kadar ne var. Ben biliyorum ama bu sadece bu biraz yardım lütfen ihtiyacı, tüm yanlış ...

// 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 fstream buna eklenmiş olması gerekir gerçek dosya bir filepath dize, ama biz? '>' Eşittir son satırı kaldırdıktan sonra

Tamam, ben aslında bir kaç değişiklik yapılmış ve bu iş gibi görünüyor, ama şimdi kopyalar orada veri kez ... arggg, yani dosyadaki her satır 2 kez şimdi: (

Şimdi sadece altında, alttan ekleme olsa Tamam, fwrite kaldırıldı?>

OMG, ben sadece son satırına kadar her şeyi gerekiyor, bunu yapmak için bir yol yok mu?? Ben gerek yok? ">"

3 Cevap

Dosya sistemi üzerinde dosya ile basit bir yolu:

<?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));
}

Hangi yapar ..

$ cat file.txt 
<?php
echo 'Hello world';
?>
$ php test.php 
$ cat file.txt 
<?php
echo 'Hello world';
echo "... again";
?>

Çünkü diyor ki, çizginin iki kez her satırı kopyalıyor:

 @fwrite($fp, $output);

Sen sadece okumak gibi okudum satır yazmak gerek yok, bitiş etiketi bulmak için dosyayı okuyorsanız.

Ben son satırdan sonra yeni bir <? YOUR CODE ?> eklemek istiyorum ...

Eğer eklemek için yeni bir PHP kodu varsa veya $code bu regular expression ile yapılabilir

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