kostenloser Webspace werbefrei: lima-city


php Text lesen und schreiben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    tradon

    tradon hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. g****e

    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
  4. Autor dieses Themas

    tradon

    tradon hat kostenlosen Webspace.

    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);
  5. 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
  6. Autor dieses Themas

    tradon

    tradon hat kostenlosen Webspace.

    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
  7. 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
  8. Autor dieses Themas

    tradon

    tradon hat kostenlosen Webspace.

    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))
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!