#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! + Multi-Zitat Zitieren
#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.. + Multi-Zitat Zitieren
#3 5. Dezember 2008 AW: Preg-Replace Allgemein zu regulären Ausdrücken kann ich folgenden Tutorial von PHP-Resource empfehlen. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#5 6. Dezember 2008 AW: Preg-Replace über gib doch den namen seperat und match: Code: /[\d.,]+,$name,.*/ + Multi-Zitat Zitieren
#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 :-( + Multi-Zitat Zitieren