HTML-Teil einer Seite per PHP austauschen

  1. Jakob

    Jakob Thread StarterMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Hallo,

    habe eine Seite auf der eine Tabelle mit Daten ist. Diese Tabelle wird nur halbjährlich geändert, weshalb ich nicht für jeden Aufruf ne DB-Abfrage möchte, sondern auch gleich das Adminsystem den HTML-Code in die Datei schreiben kann.

    Das ist der Knackpunkt.

    Ich habe den auszutauschenden Bereich per PHP-Kommentare gekennzeichnet und über diesen Code
    PHP:
    $ersetzen '=//.*termine_start.*//.*termine_stop.*=siU';
    $durch    '// termine_start'.$Termin_Tabelle.'// termine_stop';
    $str      preg_replace($ersetzen$durch$str);
    $str ist der Inhalt des HTML-Dokuments.

    2 Fragen:
    Muss ich den Inhalt wirklich komplett einlesen?
    Wie mache ich das? fopen und dann? Und wie überschreib ich die Datei?

    Danke!
     
    Jakob, 13.07.2005
  2. ThaHammer

    ThaHammerMacUser Mitglied

    Mitglied seit:
    01.06.2004
    Beiträge:
    3.277
    Zustimmungen:
    13
    Ich habe mal was ähnliches gebastelt, das ersetzt auch einen teil des HTML Codes.
    Du liest die Datei erst komplett ein und speicherst Sie zwischen.

    PHP:
    if($datei fopen($pfad,"r")) // Datei öffnen
        
    {
            
    $z=file_get_contents($pfad);
    Das ist jetzt nur ein Ausschnitt. Danach suchst Du den Start und Endpunkt des zu ersetztenden Beriches und schreibst den neuen text rein.
    Mit $wert = htmlentities($wert); // String in html ändern
    Zeichen konvertieren falls ä,ü, oder so mit drin sind.

    PHP:
    $datei1 fopen($pfad,"w");
                
    fwrite($datei1,$z,$gesamtneu);
    Zum Schluß mußt Du das ganze so wieder zurück schreiben. w damit php die vorhandene Datei komplett ersetzt, sonst bleiben immer Reste übrig.

    Ich könnte es Dir auch komplett zuschicken, dann kannste es selber mal durchschauen.
     
    ThaHammer, 14.07.2005
  3. Jakob

    Jakob Thread StarterMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Hallo,

    danke für die Hilfe. Hab's leider nicht mit file_get_contents machen können, da hier erst PHP 4.1.2 vorherrscht. Hab es jetzt so gemacht:

    PHP:
    function html_austauschen($Tabelle){
    $pfad '../Seminarangebote/Termine_Preise.php';

    if(
    $datei fopen($pfad,"r")){
        while (!
    feof($datei)) { // Umstand wegen PHP < 4.3
            
    $str .= fread($datei8192);
        }
        
        
    $ersetzen '=<!--.*termine_start.*-->.*<!--.*termine_stop.*-->=siU';
        
    $durch      '<!-- termine_start -->'.$Tabelle.'<!-- termine_stop -->';
        
        if(
    $neu preg_replace($ersetzen$durch$str)){
        
        
    $datei fopen($pfad,"w");
            if(
    fwrite($datei,$neu) === FALSE){
                echo 
    'Datei konnte nicht ge&auml;ndert werden';
                exit;
            } else echo 
    "Daten wurden aktualisiert:";
        } else {
        echo 
    'Terminbereich konnte nicht gefunden werden';
        }
        
    fclose($datei);
    }
    }
    Dieses zweimalige Öffnen von der selben Datei nur mit anderem Zeiger, ist das OK? Funktionieren tut's :D
     
    Jakob, 14.07.2005
  4. dms

    dms

    Klar, is OK. Schöner wäre es, meiner Meinung nach aber, die Datei so einzulesen:
    Code:
    $str=implode("",file($pfad))
    Dürfte auch schneller gehen.
     
  5. Jakob

    Jakob Thread StarterMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Hab mal gerade verglichen. Ist schwer, da das sehr kleine Zeiten sind, die auch noch gut schwanken, aber „meine“ Lösung ist öfter unter 0.05 sek, „Deine“ öfter drüber. Natürlich nicht mal im Ansatz statistisch auswertbar ;)

    Schöner ist sie aber auf jeden Fall.
     
    Jakob, 14.07.2005
  6. ThaHammer

    ThaHammerMacUser Mitglied

    Mitglied seit:
    01.06.2004
    Beiträge:
    3.277
    Zustimmungen:
    13
    Na hauptsache es funktioniert! :D
     
    ThaHammer, 14.07.2005
Die Seite wird geladen...
Ähnliche Themen - HTML Teil einer
  1. jeremyex
    Antworten:
    0
    Aufrufe:
    414
    jeremyex
    02.11.2016
  2. leo-magic
    Antworten:
    24
    Aufrufe:
    2.030
    Sp0tlight
    18.05.2015
  3. nonpareille8
    Antworten:
    2
    Aufrufe:
    1.071
    nonpareille8
    15.08.2014
  4. xenon96
    Antworten:
    9
    Aufrufe:
    890
    Rhapsody
    20.02.2013
  5. sempai0815
    Antworten:
    1
    Aufrufe:
    393
    Schiffinho
    10.09.2009