Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Die Funktion "preg_replace()" replaced nicht???

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Die Funktion "preg_replace()" replaced nicht???

    Hallo,

    ich bin dabei, mit Hilfe des Buches "Webseiten professionell erstellen" eine eigene Webseite zu basteln.

    Meine html-Grundgerüst-Datei enthält die Code-Zeile

    Code:
    <div id="content">[%content%]</div>
    Meine Templates-Datei enthält u.a. die folgenden Funktionen:

    Code:
    function template_set_var($template_content, $name, $value){
        $pattern = "/\[\%".$name."\%\]/";
        return(preg_replace($pattern, $value, $template_content));
    }
    function template_show($template_content){
        echo $template_content;
        exit();
    }
    Meine php-Datei ruft die templates so auf:

    Code:
    $content_lines = file($content_files[$get_page]);
    $content = implode("", $content_lines);
    $page = template_use('standard');
    $page = template_set_var($page, "content", file_get_contents($content_files[$get_page]));
    $title = template_get_title($page);
    $page = template_set_var($page, "title", $title);
    template_show($page);
    Mein Problem:

    Die Seiteninhalte, die im html-Gerüst für den Platzhalter "%content% stehen, werden zwar richtig ermittelt, aber unterhalb der Seite, also nicht an der Stelle des Platzhalters, angezeigt.

    Im Bereich für den Platzhalter steht lediglich "[%content%]" und ansonsten ist er leer.

    Mir sind die Ideen ausgegangen, wo ich den Fehler noch suchen kann.

    Wäre sehr nett, wenn mir jemand helfen könnte.

    LG, Sturmwolke
    LG, Sturmwolke


  • #2
    Das ganze schreit doch danach, zu einer Klasse gemacht zu werden...

    Naja, zum Thema: Ich versteh nicht ganz, was das Problem ist. Einmal sprichst du von %var% und einmal von [%var%] als Platzhalter. Dein preg_replace ersetzt zumindest [%var%]. Übrigens ist es unnötig, preg_* zu nutzen wenn du ein string durch einen anderen ersetzt. Reguläre Ausdrücke sind dafür etwas "overload", str_replace sollte es auch tun.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Einmal sprichst du von %var% und einmal von [%var%] als Platzhalter.
      Sorry, hab einmal die eckigen Klammern vergessen.

      Übrigens ist es unnötig, preg_* zu nutzen wenn du ein string durch einen anderen ersetzt.
      Die Funktion erzeugt die Haupt-Seiteninhalte aus verschiedenen Inhalts-Dateien abhängig davon, auf welchen Link in meiner Navigationsleiste geklickt wurde. Ohne Klick wird die "Home"-Seite angezeigt.

      Wie gesagt, die Seiteninhalte werden korrekt ermittelt, aber unterhalb der html-Seitendefinition angezeigt und nicht dort, wo der Platzhalter ist. Ich hab schon mal versucht, den css-Code für den content-Bereich auszukommentieren, hat aber nichts gebracht.

      LG, Sturmwolke

      PS: Klassen werden in meinem schlauen Buch erst später behandelt.
      LG, Sturmwolke

      Kommentar


      • #4
        Zitat von Sturmwolke Beitrag anzeigen
        Wie gesagt, die Seiteninhalte werden korrekt ermittelt, aber unterhalb der html-Seitendefinition angezeigt und nicht dort, wo der Platzhalter ist.
        Das kann eigentlich garnicht sein, bei dem QT den du gepostet hast. Hast du mal nen Beispiel? Zeig mal wie eines der Templates aussieht und wie der daraus generierte Quelltext aussieht.
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          Zitat von tkausl Beitrag anzeigen
          Zeig mal ... wie der daraus generierte Quelltext aussieht.
          Danke, das war ein heißer Tipp!

          Meine Seite wurde einfach 2x ausgegeben. Einmal das Gerüst mit Platzhalter und dann der ausgewertete Platzhalter ohne Gerüst.

          Ich hab den doppelten Aufruf beseitigt und bekomme jetzt die Seite mit dem ausgewerteten Platzhalter an der richtigen Stelle.

          Jetzt kann ich weiter basteln ...

          LG, Sturmwolke
          LG, Sturmwolke

          Kommentar

          Lädt...
          X