[PHP] Preg-Replace

Dieses Thema im Forum "Webentwicklung" wurde erstellt von SnusMaster, 5. Dezember 2008 .

Schlagworte:
  1. 5. Dezember 2008
    Preg-Replace

    Hi @all Pro's

    Ich hab da ne doofe Newbie Frage und zwar:

    $file_content=preg_replace("/(.*?)".$newLineArray[2]."/",$newLine,$file_content);


    Was genau macht der erste Ausdrukc mit dem * mit dem ? etc. etc.
    Denn ich hab ein Problem ich möchte eine ganze Zeile ersetzen und ich ersetze so leider nur die ersten 3 Komma werte...

    Kann mir das jemand mal bissle genauer erläutern den rein von der PHP Referenz her komm ich nicht weiter...

    THX BW iss sicher!
     
  2. 5. Dezember 2008
    AW: Preg-Replace

    . <-- ein Zeichen (egal ob a-z A-Z 0-9 o. ä.)
    * <-- Anzahl egal (0-unendlich)
    ? <-- muss nicht unbedingt vorkommen

    Die Klammern sagen "nur", dass der Wert der auf den regulären Ausdruck in den Klammern passt, gespeichert werden soll.

    Wenn ich nich grad komplett verpeilt bin..
     
  3. 5. Dezember 2008
    AW: Preg-Replace

    Allgemein zu regulären Ausdrücken kann ich folgenden Tutorial von PHP-Resource empfehlen.
     
  4. 5. Dezember 2008
    AW: Preg-Replace

    Schaffes einfach nit...

    Der String:

    46.232323,123,Fux231489,08453,18:35:14,

    soll mittels diesem Code immer wieder überschrieben werden (Dort wo der Name gleich ist)

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


    $myFile  "markers.txt" ;
    $fh  fopen ( $myFile 'a' ) or die( "can't open file" );


    // aufruf der Funktion (dateiname,neuezeile)


    addNewLine ( "markers.txt" , "" . $_POST [ 'y' ]. "," . $_POST [ 'x' ]. "," . $_POST [ 'name' ]. "," . $_POST [ 'number' ]. "," . date ( 'H:i:s' ). ",\n" ); 


    fwrite ( $fh $stringData );
    fclose ( $fh );

    ?>


    abers klappt einfach nit, kann mir jemand helfen?? Please
     
  5. 6. Dezember 2008
    AW: Preg-Replace

    über gib doch den namen seperat und match:
    Code:
    /[\d.,]+,$name,.*/
     
  6. 6. Dezember 2008
    AW: Preg-Replace

    Murdoc, danke für deine Mühe, es will aber irgendwie nicht...dein Tag überschreibt viel zu wenig...
    BW haste jetz schonmal bekommen!

    Die Line's sehen so aus:
    46.232323456,7.4567,Rudi,089920999,09:24:09
    46.232323456,7.4567,Rudi2,089920999,09:23:09
    46.232323456,7.4567,Rudi3,089920999,09:21:10

    Bin jetzt soweit mittels Tut's etc. gekommen:
    PHP:
    $file_content = preg_replace ( "/(.*?)" . $newLineArray [ 2 ]. "," . $newLineArray [ 3 ]. "," . "/" , $newLine , $file_content );
    und wenn ich jetzt eines Überschreibe, dann siehts so aus:
    46.232323456,7.4567,Rudi,089920999,09:24:09
    09:23:55

    Das heisst das Datum füllt sich immer weiter voll...

    Weiss nicht mehr weiter :-(
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.