[PHP] search line and Delete

Dieses Thema im Forum "Webentwicklung" wurde erstellt von SnusMaster, 25. November 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 25. November 2008
    search line and Delete

    Hi Jungs ich als Newbie in PHP habe einige Probleme...hoffe da kann mir wer helfen...
    also

    PHP:
    <? php
    $myFile 
    "markers.txt" ;
    $fh  fopen ( $myFile 'a' ) or die( "can't open file" );
    $stringData  "" . $_GET [ 'y' ]. "," . $_GET [ 'x' ]. "," . $_GET [ 'name' ]. "\n" ;
    fwrite ( $fh $stringData );
    fclose ( $fh );
    ?>
    Ich lese von einer URL daten raus und speichere diese in Markers.txt...
    =======Markers.txt=======
    7.4804,46.2887,Name1
    7.4804,46.2887,Name2
    =====================
    Jetzt möchte ich gerne bevor ich die Sache speichre, im TXT File schauen ob bereits eine Linie
    mit dem selben Namen existiert, wenn ja so soll Sie gelöscht werden und dann die neue Linie hinein geschrieben werden...

    Kennt sich da jemand aus?!
    Bin seit 2h am suche und probieren aber klappt einfach nichts wie ich es möchte...
     
  2. 25. November 2008
    AW: search line and Delete

    Beispiel:

    PHP:
    // datei existiert                
    if( $deine_datei ) {
                    
     
    // datei einlesen 
     
    $dat  file  $deine_datei  );

     
    $search_array  = array();

     
    //line entspricht deiner zeile                
     
    foreach( $dat  AS  $line ) {
      
    $search_array [] =  $line ;
     }

     
    $output_array  = array();

    // die ausgelesenen wert durchgehen
     
    foreach( $search_array  AS  $sarray ) {
      
    //prüfen ob dein suchbegriff nicht vorhanden ist, wenn ja entfällt die zeile ansonsten wird alternativzeile geschrieben
      
    if(! inarray ( $deingesuchterAusdruck , $sarray ))
       
    $output_array [] =  $sarray ;
      else
       
    $output_array []  =  $deineneuelinie ;
     }
     
     
    // datei neu schreiben
     
    fwrite ( $fh join ( "\n" , $sarray ));
    }
    geht natürlich einfacher und schneller mit preg_match und co, aber der einfachheit halber so gelöst
     
  3. 25. November 2008
    AW: search line and Delete

    Danke!!
    Könnte dich jetzt schon 1000mal bewerten, warst mir schon ne riesige Hilfe!!
    Habe jetz noch ein Problem habs so modifiziert:

    PHP:
    <? php


    $myFile 
    "markers.txt" ;
    $fh  fopen ( $myFile 'a' ) or die( "can't open file" );
    $stringData  "" . $_GET [ 'x' ]. "," . $_GET [ 'y' ]. "," . $_GET [ 'name' ];

    $deine_datei  "markers.txt" ;
    $line  $stringData ;
    $deingesuchterAusdruck  $_GET [ 'name' ];

    // datei existiert                
    if( $deine_datei ) {
                    
    // datei einlesen
    $dat  file  $deine_datei  );

    $search_array  = array();

    //line entspricht deiner zeile                
    foreach( $dat  AS  $line ) {
      
    $search_array [] =  $line ;
    }

    $output_array  = array();

    // die ausgelesenen wert durchgehen
    foreach( $search_array  AS  $sarray ) {
      
    //prüfen ob dein suchbegriff nicht vorhanden ist, wenn ja entfällt die zeile ansonsten wird alternativzeile geschrieben
      
    if(! inarray ( $deingesuchterAusdruck , $sarray ))
       
    $output_array [] =  $sarray ;
      else
       
    $output_array []  =  $line ;
    }

    // datei neu schreiben
    fwrite ( $fh join ( "\n" , $sarray ));
    fclose ( $fh );


    ?>
    Fatal error: Call to undefined function inarray() in enter.php on line 31

    Weisst du warum?

    THX BW hast du natürlich schon!
     
  4. 25. November 2008
    AW: search line and Delete

    Hab mal was mit preg_match/preg_replace gemacht hoffe es ist so wie du es wolltest...
    PHP:
    function  addNewLine ( $datei , $newLine ){
      
    //prueft ob die Datei existiert
      
    if( file_exists ( "./" . $datei )){
        
    //schreibt den Datei-Inhalt in eine Variable
        
    $file_content = file_get_contents ( $datei );
        
    //schreibt den Namen der neuen Zeile in eine Variable um spaeter damit zu pruefen
        
    $newLineArray = explode ( "," , $newLine );
        
    //prueft ob in der Datei der Name schon existiert
        
    if( preg_match ( "/(.*?)" . $newLineArray [ 2 ]. "/" , $file_content )){
          
    //wenn ja dann wird er durch die neue Zeile ersetzt
          
    $file_content = preg_replace ( "/(.*?)" . $newLineArray [ 2 ]. "/" , $newLine , $file_content );
        }else{
        
    //wenn nicht wird die neue Zeile einfach hinten angehangen
        
    $file_content .= "
    "
    . $newLine ;
        }
        
    //die Datei wird neu beschrieben
        
    file_put_contents ( $datei , $file_content );
      }
    }
    // aufruf der Funktion (dateiname,neuezeile)
    addNewLine ( "blubb.txt" , "110,110,Name2" );
    MFG Ralphwiggum
     
  5. 25. November 2008
    AW: search line and Delete

    sry, muss natürlich in_array() heißen.


    deutlich elegantere lösung per preg_match als meine, wie ich schon geschrieben hab.
     
  6. 25. November 2008
    AW: search line and Delete

    WOW es funktioniert!! Ihr seit nun auf meiner PHP-Referenz Liste..!!
    BIG THX an beide nochmals....es funktionieren sogar beide Lösungen! Jetz versuche ich die noch nachzuvollziehen und schon haben wir den spass! BW an beide draussen! Vielen Dank!
    Kann gecloset werden!
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.