2016-07-23 17 views
0

Ich habe Linien alsZeiger auf Zeilen verschieben und löschen sie in PHP, Wie mache ich es?

abc 
def 
ghi 
jkl 
mno 
pqr 
xyz 

Ich möchte die ersten 4 Zeilen nehmen und sie löschen?

Ich verwende die Datei

$datafile="/var/www/html/test/data/$data"; 
$fp = fopen($datafile,"r"); 

Ich bin hier stecken !! Wie bewege ich Zeiger, wie verwende ich Array oder einen Puffer?

+0

Sie, dass in zwei Linien tun können: '$ lines = Datei ($ filename); file_put_contents ($ filename, array_splice ($ lines, 4)); ' – FirstOne

Antwort

0
$array = file("/var/www/html/test/data/$data"); 
$array = array_slice($array, 4); 
+0

Ich würde vorschlagen, das Ergebnis von' array_slice' in eine andere Variable zu setzen und die umbenannten in die Datei zu speichern ... – FirstOne

+0

Hängt davon ab, ob sie gespeichert werden Wird benötigt. '$ name ="/var/www/html/test/daten/$ data "; file_put_contents ($ name, array_slice (Datei ($ name), 4)); ' – parnas

0

können Sie file_get_contents() verwenden, um die Inhalte der Datei zu erhalten und es dann in ein Array preg_split() mit konvertieren. Sobald Sie ein Array von Linien haben; Verwenden Sie einfach array_slice(), um das Array aus dem gewünschten Index zu schneiden ... in Ihrem Fall, 4. Der folgende Code zeigt, wie ...

<?php 

    // THE TEXT FILE TO BE READ: 
    $targetFile    = "/var/www/html/test/data/$data"; 

    // GET THE CONTENTS OF THE FILE & STORE IT IN A VARIABLE (IF IT EXISTS) 
    $strFileContents  = null; 
    if(file_exists($targetFile)){ 
     $strFileContents = file_get_contents($targetFile); 
    } 

    // EVERY LINE IN A IS TERMINATED BY A NEW LINE CHARACTER.... WE KNOW THAT. 
    // SO WE SPLIT THE CONTENTS OF THE FILE USING THIS KNOWLEDGE... 
    if(!is_null($strFileContents)){ 
     $arrFileLines = preg_split("#\n#", $strFileContents); 

     // SELECT ALL ELEMENTS FROM THE 4TH ELEMENT TILL THE END 
     $arrResultant = array_slice($arrFileLines, 4); 

     // CONVERT THE ARRAY BACK TO STRING... 
     $strBuffer  = implode("\n", $arrResultant); 

     // RE-SAVE THE FILE BACK... 
     file_put_contents($targetFile, $strBuffer); 
    } 
Oder sogar sehr kurz;

Prost ... und viel Glück ;-)