Hallo Ihr alle,
hilfe ich muss in einer Textdatei, die ich regelmäßig erhalte, in jeder Zeile das erste Leerzeichen das erscheint durch einen "-" ersetzen. Mache das bisher manuell ist aber eine Arbeit für DOOFE. Hat jemand ein script, das mir die Datei (heißt immer jule.txt )öffnet, das erste Leerzeichen in jeder Zeile ersetzt und als neue Datei speichet? Bin eine absoluter Neuling ( Praktikum) . könnte dann glänzen!!
Danke
Julia
Erstes Leerzeichen in einer Zeile in txt.datei finden
-
Julia9060 -
12. Juli 2005 um 18:00
-
-
Jeder etwas bessere Editor bietet eine [replace]-Funktion an, die auch wahlweise alle gefunden Stellen ändert. Also nicht mit Notepad versuchen die Sache in den Griff zu bekommen.
Nach empfehlenswerten Editoren gibts hier im Forum genügend Threads.Einfach mal suchen...
-
hab gedacht mit PHP, da die Datei auf dem Webserver ankommt. Kann man sie nicht direkt dort anlysieren die ersetzungen machen und dann unter neuen Namen abspeichern und die alte löschen?
-
doch das müsste schon gehen also ich habe jetzt nicht so die erfahrung mit txt datein einlesen weis nur das man so text relativ leicht ersetzen kann...
-
textfile einlesen (müsste ich jetzt auch nachschauen, brauche ich fast nie, aber such mal nach fopen auf php.net) und die leerzeichen ersetzen kannst du mit [php:1:e2f3256a65]<?php
str_replace(" ", "-", $inhaltaustextfile);
?>[/php:1:e2f3256a65] und dann wieder ins textfile schreiben (fwrite) und schliessen (fclose) oder soo.. -
ich glaube ich verstehe was Du tust, aber werden dann nicht alle Leerzeichen in der Zeile ersetzt?
Es soll aber nur das erste in jeder das gefunden wird ersetzt werden.Julia
-
oh stimmt dann würden alle erstetzt werden hmm das ist hard
-
JA das würde alle ersetzen!!!!!!!
Es gibt aber auch anders (-;
Code
Alles anzeigen$filename = "datei.txt"; $content=""; $handle = fopen ($filename, "r"); while (!feof($handle)) { $buffer = fgets($handle, 4096); if(substr($buffer, 0, 1)==" ") { $tmp="-" } else { $tmp=substr($buffer, 0, 1); } $content.=$tmp.substr($buffer, 1 ); } fclose ($handle); $handle = fopen ($filename, "w"); fwrite($handle, $content); fclose ($handle);
Das sollte alle leerzeichen in der Datei esetzen
-
muss man den code verstehen
-
Angenommen du hast die Textdaten in einer Datei namens "julia.txt" stehen, dann sehe der nötige PHP-Code so aus
HTML
Alles anzeigen<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <? $fname = "julia.txt"; // Quelldatei $tmp = array(); // speichert die geänderten Daten zwischen $z = 0; // Counter für $tmp ?> <h2>Codebeispiel für Julia</h2> Alle führenden Leerzeichen aus der datei <?echo$fname;?> sollen entfernt werden. </p> <? // Datenlesen $f = fopen($fname, "r+"); while (!feof($f)) { $line = fgets($f); $tmp[$z] = ltrim($line); ++$z; } fclose($f); // Daten schreiben $f = fopen($fname, "w+"); for ($i = 0; $i < $z; ++$i) fwrite($f, "-".$tmp[$i]); fclose($f); ?> Daten sind geändert zurück in <?echo$fname;?> gespeichert worden. </p> </body> </html>
Vielleicht ist das ja leichter verständlich. Die Funktion ltrim() entfernt alle Leerzeichen am Anfang des String. Dies sollte dein Problem schon lösen. -
ach so, stimmt lol hab gar nicht dran gedacht dass du nur das erste ersetzen willst.. gg.. naja zu spät ich hoffe man hat dir weiter geholfen
-
@ torty
habe mir den Code angesehen, nur möchte ich nicht die Führenden Leerzeichen entfernen, sondern das erste was in der Zeile gefunden wird.
Beipiel Orginal
Jens Schneider; 012658975; 665589725;61440;Ergebniss
Jens-Schneider;012658975; 665589725;61440;ich hoffe dies veranschaulicht mein Problem deutlicher.
-
Ähhmm...naja - ehrlich gesagt ist mir die genaue Aufgabenstellung nun nichtmehr klar.
Du willst nur(!) das 1.Leerzeichen (hier also hinter Schneider;) entfernen? Was ist mit dem angesprochenen Minus? Und warum dann nicht alle Leerzeichen nach den Semikolon's entfernen.So richtig versteh ich es nicht ...
-
Sorry,
ich möchte das 1.Leerzeichen nicht entfernen, sondern durch einen - ersetzen.
-
Mein code ist ein PHP code und in die variabelle $filename einfach den namen der zu ändernden datei eintragen. dan ausführen ( es wird nichts ausgegeben.
es qwird nur die datei geöffnet und zeiel für zeile eingelesen und sobald as erste zeichen der zeile eine " " ( leerzeichen ) ist wird es durch ein - ersetzt.
danach wird die datei wieder überschrieben. DAbei wird aber die ganze datei in den RAM gleaden.
-
GreenRover
Du prüfst aber nur ob das 1.Zeichen der Zeile ein Leerzeichen ist. Steht das 1.Leerzeichen wie eben beschrieben irgendwo im Text, findet es deine Routine nicht.
Eigentlich sollte dies kein Problem darstellen, jedoch muss man erstmal die Zeit zum tüfteln finden.... -
Sorry,
mit das 1.Leerzeichen meinte ich das erste vorkommende Leerzeichen
Beipiel:
julia Hamman-125987456-1548953-1984
Peter Meier-125987456-1548953-1984ich möcht das Lerrzeichen zwischen
1. Zeile julia und Hamman...
2. Zeile Peter und Meier....durch den - ersetzen, so das das Ergebnis wie folgt aussieht:
1. Zeile julia-Hamman...
2. Zeile Peter-Meier...Danke
-
So, jetzt aber!
HTML
Alles anzeigen<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <? $fname = "julia.txt"; // Quelldatei $tmp = array(); // speichert die geänderten Daten zwischen $z = 0; // Counter für $tmp ?> <h2>Codebeispiel für Julia</h2> Alle führenden Leerzeichen aus der datei <?echo$fname;?> sollen entfernt werden. </p> <? // Datenlesen $f = fopen($fname, "r+"); while (!feof($f)) { $line = fgets($f); // falls Leerezeichen vor dem 1.Buchstaben existieren müssen diese entfernt werden $line = ltrim($line); $spacePos = strpos($line, " "); echo $spacePos." | "; if ($spacePos > 0) $tmp[$z] = substr($line, 0, $spacePos)."-".substr($line, $spacePos+1, strlen($line)); ++$z; } fclose($f); // Daten schreiben $f = fopen($fname, "w+"); for ($i = 0; $i < $z; ++$i) fwrite($f, $tmp[$i]); fclose($f); ?> Daten sind geändert zurück in <?echo$fname;?> gespeichert worden. </p> </body> </html>
-
ja aber da kann man doch gleich alle ersetzen lassen oder sind noch andere drinn?!?!?
-
Mensch Torty
Du bist echt genial, ich habe es nit einer Datei mit 1000 Zeilen versucht und das Erbenis ist perfekt. Vielen herzlichen Dank für die Hilfe. Ich werde die nun gewonnen Zeit nutzen um mir Dein Script genauer anzuschauen und natürlich auch zu verstehen wie Du das realisiert hast.
Es ist für mich wie früher bei meiner Nachhilfe.Ich kenne das Problem
Ich bekomme die Lösung
und nun erkenne und verstehe den Weg zum Ziel.
Liebe Grüsse und nochmal vielen, vielen Dank
-