frage zu str_replace

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
dopedouglaz
Mitglied
Beiträge: 3
Registriert: 11.09.2006 12:03

frage zu str_replace

Beitrag von dopedouglaz »

Hallo hab mal eine frage
ich habe eine Datei die ich mit der Funktion str_replace durchsuchen lasse um bestimme zeilen zu ändern.
Doch momentan ist es so das er mir alle Übereinstimmungen die er findet ändert.
Gibt es nicht eine Lösung womit er mir nur das erste gefundene ändert oder wenn er mir alle ändert dann fortalaufen ändert

Geändert
Geändert1
Geändert2
Geändert3

BeispielCode

Code: Alles auswählen

$lines = fopen("test.txt", "w+");
$text = implode ('', $lines);
$count =substr_count($text, "Überschrift ");
$g=1;
do{
$text= str_replace("Überschrift ", "Überschrift$g  ", $text  );
$g++;
$handle = fopen("test.txt", "w+");

fputs($handle, $text);
fclose($handle);
}while($g < $count);
Hier ersetzt er jede Überschrift mit Überschrift1
über ein es geht nicht oder ein beispiel würde ich mich freuen
THX
Dopedouglaz
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Mich wundert, dass der Code überhaupt etwas anderes macht, als einen Fehler auszugeben. :D

Code: Alles auswählen

$lines = fopen("test.txt", "w+");
$text = implode ('', $lines);
$lines ist doch ein Zeiger (Handle), wie willst Du den imploden?
meinst Du nicht, dass es besser wäre die Datei per file("Dateiname") in ein Array zu laden und dieses Array dann nach dem Suchbegriff abzusuchen?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
dopedouglaz
Mitglied
Beiträge: 3
Registriert: 11.09.2006 12:03

Beitrag von dopedouglaz »

mir geht es auch nur darum den gesuchten string fortlaufen zu veränder d.h
mit Nr. oder so die steigen String1, String2 ,String3 usw.
alles andere ist nicht so wichtig das einlesen klappt schon
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Was ich sagen wollte: str_replace() schafft das nicht. Entweder alle oder garkeiner.... :D
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Re: frage zu str_replace

Beitrag von Jensemann »

dopedouglaz hat geschrieben: Gibt es nicht eine Lösung womit er mir nur das erste gefundene ändert
Gibt es, aber wie Miriam schon sagte, nicht mit str_replace(). Der Vogel ist nämlich kein Spatz mehr, deswegen nehmen wir keine 9mm sondern die 38er Magnum unter den Such-/Ersetzen-Werkzeugen: preg_replace

Du musst also erstmal Reguläre Ausdrücke lernen. Wenn du vorher mit str_replace() auskamst und es nur um das Limit geht, ist das aber kein großes Problem. Du solltest dir allerdings bewusst sein das Reguläre-Ausdrücke um längen langsamer sind als ein str_replace(), somit ist die gesammte Vorgehensweise an dein Problem u.U. nicht optimal und es existiert vielleicht eine bessere Lösung, das kann ich aber an Hand dessen was du oben genannt hast nicht beurteilen.
Antworten

Zurück zu „Coding & Technik“