Ab bestimmten Wort in Datei schreiben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ahnung
anmerkung
array
aussehen
befehlen
begrenzer
beschreibung
blicken
datei
inhalt
kleines beispiel
navigation
stehen
vorkommen
-
Hallo,
Ist es möglich ab einem bestimmten Wort in eine Datei zu schreiben?
----------------------------
Inhalt von datei.txt
Anfang1 <? include \"forum/include/theme.php\"; include \"forum/include/navigation.php\"; include \"forum/include/foren/foren.php\"; include \"forum/include/navigation5.php\"; ?> Ende1
----------------------------
Kann ich jetzt ab \"Anfang1\" was in die Datei schreiben oder ab
\"Anfang1\" bis \"Ende1\" löschen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Lies dir mal die Beschreibung von preg_match() bzw. preg_match_all() durch, das sollte dir weiterhelfen. http://de.php.net/preg-match
Reguläre Ausrücke sind nicht schlecht, wenn man ein bisschen Ahnung davon hat. Bei Problemen kannst du ja einfach nochmal schreiben. -
Hmm.. Schonmal danke, aber könntest du mal ein kleines Beispiel erstellen?
Blick da nicht so ganz durch ^^ -
Ein ganz einfacher Regex für dein Problem könnte zB so aussehen:
<? $data=file_get_contents(\'datei.txt\'); // File als String einlesen preg_match_all(\'~Anfang1(.*)Ende1~Uism\',$data,$treffer); ?>
preg_match_all() hab ich hier verwendet falls in dem File mehrere Male Anfang1 und Ende1 vorkommen. Ist hier jetzt zwar nicht der Fall, aber preg_match() würde beim ersten Treffer abbrechen.
Es wird von preg_match_all() nach Anfang1 und Ende1 gesucht, was dazwischen steht ist dabei egal (.*). Die ganzen Treffer werden in einem mehrdimensionalen Array Names Treffer gespeichert. $treffer[0] enthält dabei wiederum ein Array, indem jeweils der ganze Suchstring gespeichert ist, also Anfang1-was_auch_immer_für_Text-Ende1. In $treffer[1] stehen hingegen nur Arrays, mit dem was zwischen Anfang1 und Ende1 zu finden ist, in deinem Fall also die include-Befehle. Ein Ausgabebeispiel wäre dann zB:
<? echo $treffer[1][0] //liefert den ersten Treffer ohne die Begrenzer Anfang1 und Ende1 echo $treffer[1][1] //liefert den zweiten Treffer (falls vorhanden) ohne die Begrenzer Anfang1 und Ende1 ?>
Wenn du den Teil zwischen Anfang1 und Ende1 löschen willst, würde ich preg_replace() verwenden.
Ich hoffe, das hilft dir ein wenig weiter.
So als Anmerkung: Der php-Parser versucht alles was zwischen <? und ?> in deiner Datei steht auch irgendwie zu interpretieren, somit bekommst du keine Ergebnisse geliefert, wie ich beim Testen festgestellt hab. Du musst also vorher entweder die <? und ?> entfernen oder erst noch irgendwie excluden zB mit <\\? und \\?>. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage