php Text lesen und schreiben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
auslese
bearbeiten
code
darstellen
datei
datum
editor
ende
ersetzen
innerhalb start
liegen
match
problem
sicherheit
start
text
treffer
url
zeiger
-
Hallo zusammen, kann mir evtl. jemand weiterhelfen habe gerade einen Hänger :-)
Ich versuche mittels php eine Datei auzulesen
$daten = file_get_contents($url);
dies Filter ich dann anhand gekennzeichneten Stellen dich ich benötige, mit <!--Start--> : <!--Ende--> im Quelltext
preg_match_all("/Start-->(.*)<!--Ende/Us", $daten, $array, PREG_SET_ORDER);
und hier erhalte ich meinen gefilterten Text
foreach($array as $match) { echo $match[1]."<br>"; }
Den werde ich bearbeiten und in die Datei schreiben
fwrite($daten, $update_text);
Leider komme ich nicht auf den zeiger wie ich speziell die gefilterten Stellen update die zwischen Start und Ende liegen
Wenn mir heir jemand helfen könnte wäre ich sehr verbunden
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Deine Regex sieht schon irgendwie falsch aus. Du nimmst nun vom ERSTEN start bis zum LETZEN end alles.
Probier mal:
preg_match_all("|Start-->(.*?)<!--Ende|", $daten, $array, PREG_SET_ORDER);
Damit könnt es evtl gehen.
Liebe Grüße -
Danke für die schnelle Antwort nur mit dem auslesen habe ich kein Problem, dass Problem ist es wieder in die Datei zu schreiben
denn das fwrite löscht den gesamten inhalt der Seite und schreibt den geänderten Text in die Datei. Ich benötige aber nur ein update auf den geänderten text
$verbindung = fopen($url, 'w');
fwrite($daten, $update_text); -
Hallo
wieso Zeiger setzen,
Du kannst doch auch einfach den Text-Teil aus Treffer mit str_replace() ersetzen
Datei: _daten1.txt
<p>Lalalalala <!--Start-->ersetze mich<!--Ende--> blubberblubb</p> <p>Blablabla <!--Start-->und mich auch<!--Ende--> halligalli</p> <p>Oink Oink <!--Start-->ich will auch raus<!--Ende--> Eeek Eeek</p>
PHP-Code:
<?php // --------------------------------------------------- $url = '_daten1.txt'; // ------ Alte Daten aus $url einlesen ------ $daten = file_get_contents($url); preg_match_all("|Start-->(.*?)<!--Ende|", $daten, $array, PREG_SET_ORDER); print "<br />\n"; print "<hr />\n"; print "<br /> Vorher: \n"; print "<pre>\n"; print_r(htmlentities($daten)); print "</pre>\n"; print "<br />\n"; print "<hr />\n"; print "<br />\n"; foreach($array as $item) { echo $item[1]."<br />\n"; $daten = str_replace($item[1], 'ich bin neu hier', $daten); } print "<br />\n"; print "<hr />\n"; print "<br /> Nachher: \n"; print "<pre>\n"; print_r(htmlentities($daten)); print "</pre>\n"; // ------ Neue Daten in $url schreiben ------ $daten = file_put_contents($url,$daten); print "<br />\n"; print "<hr />\n"; print "<br />\n"; // --------------------------------------------------- ?>
Wenn Du nicht alles durch 'ich bin neu hier' ersetzen willst,
kannst Du ja noch je nach Treffer-Text aus $item[1] entsprechende Ersetzung machen
mit if() ...elseif() oder mit switch() ...case ...
foreach($array as $item) { echo $item[1]."<br />\n"; if ($item[1] == 'ersetze mich') { $replace = 'ja ja du darfst gehen'; } elseif ($item[1] == 'und mich auch') { $replace = 'nur wenn Du Bitte sagst'; } elseif ($item[1] == 'ich will auch raus') { $replace = 'dann streng dich an'; } else { $replace = 'standard-ersetz-text'; } $daten = str_replace($item[1], $replace, $daten); }
... oder hab ich das falsch verstanden, was Du willst ?!
Beitrag zuletzt geändert: 27.5.2012 16:32:11 von smartfon -
naja ich weiß auch nicht deine lösung würde mit sicherheit auch gehen, aber sich bin ich mir nicht.
Was ich machen will ist..
ich bin html Text
head
meta daten
viele texte und bla bal bla
<!--Start--> habe ich im quelltext gesetzt
AB HIER WIRD ES INTERESSANT NUR DIESEN TEXT WIILL ICH MIT SAMT SEINEN CODIERUNGEN UND WAS AUCH IMMER
AUSLESEN - DAS FUNKTIONIERT AUCH - DAS AUSGELESENE WILL ICH IN EINEN WYSIWYG EDITOR DARSTELLEN
UND DIE ÄNDERUNGEN ÜBERSCHREIBEN.....
<!--Ende--> habe ich auch im quelltext gesetzt
Nunt geht es wieder weiter mit
html links bla bla bla
head
body
html
Nun werde ich zb. DAS FUNKTIONIERT AUCH abändern habe aber das problem das innerhalb Start und ende alles schön in die datei geschrieben wird aber alles außenrum mit head body und bla bla bla gelöscht wird. Ich versuche nur das was innerhalb start und Ende steht zu überschreiben.
Das wichtige an start und ende ist, dass ich keine komplette html Seite im WYSIWYG EDITOR darstellen will -
achso ....
läuft das als .php Datei ???
Dann würde ich garnicht nach Start und Ende suchen,
sondern den "dynamischen" Inhalt an der gewünschten stelle per PHP einfügen
direkt per php include einbinden
html head ... meta daten ... /head body viele texte und bla bal bla <!--Start--> <?php include('content/block1.php'); ?> <!--Ende--> Nun geht es wieder weiter mit links bla bla bla /body /html
Dann kannst Du mit WYSIWYG direht auf die Datei 'content/block1.php' zugreifen
und muss nicht vorher suchen
oder in Variable aus MySQL lesen und ausgeben
in MySQL kannst Du auch direkt HTML-Code speichern und per WYSIWYG Editor bearbeiten
welchen WYSIWYG Editor hast Du denn (hast Du schon einen?) ... FCK oder TinyMCE oder ... ?
oder ist es keine .php Datei, in der dieser Teil-Inhalt geändert werden soll?
... wenn nur 1 Block, dann brauchst du aber nicht preg_match_all, dann genügt preg_match
und den Treffer dann an WYSIWYG übergeben zum bearbeiten
vorher Treffer im Gesamt.Code durch XXXXX (oder irgendein Platzhalter) ersetzen
und nach Bearbeitung im WYSIWYG dann das XXXXX durch neuen Code ersetzen (str_replace)
aber selbst wenn das auf .html Datei läuft
und Dein Webspace PHP kann,
dann lässt sich sogar in einer .html Datei auch PHP include nutzen,
aber erst, wenn man per .htaccess die .html Dateien auch für PHP "frei gibt" (Add-Handler)
(wenn das auf dem Webspace möglich ist, je nach Sicherheit-Einstallungen)
.... aber das ist wieder anderes Thema
Beitrag zuletzt geändert: 27.5.2012 17:16:19 von smartfon -
also die Daten liegen in einer reinen html Seite so soll es eigentlich auch bleiben, mysql wäre einfach und würde recht schnell gehen.
die webseite sollte sich jedoch nicht verändern bis auf diese start und end Bereiche.
Habe mal nach möglichkeiten gesucht und evtl. auch was gefunden.
ist es möglich dem fputs einen start -end parameter mit zu geben ?
fputs($fp, var_export ($fields, true))
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage