Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „[PHP] Probleme mit Suchpattern und preg_replace“

Crackp0t

Aktives Mitglied

Hi,

ich bin grade dabei mir eine minimalistische Templateengine zu schreiben um Platzhalter durch Text und HTML snippets zu ersetzen. Jedoch hapert es am Ansatz.

Das Ganze wird zwar nicht all zu umfangreich, jedoch will ich das aus Lernzwecken mit OOP realisieren, da ich noch Anfänger in Sachen OOP bin. Für Hinweise was mein Stil angeht bin ich also auch offen :)

Folgende Klasse soll einen gegebenen Platzhalter durch einen gegebenen Block von HTML Code ersetzen:

PHP:
abstract class HtmlTemplateEngine {
     //Datei in welcher die Rohdaten mit den Platzhaltern stehen
    private $templateFile;
     //Dieser Konstruktor wird von der abgeleiteten Klasse aufgerufen
    public function __construct($template) {

        $this -> templateFile = file_get_contents($template);
        if ($this -> templateFile == FALSE) {
            printf("can't open template file %s", $template);
        }

    }
     //Wird am ende aufgerufen um die bearbeiteten Daten zu erhalten
    protected function getTemplateFile() {
        return $this -> templateFile;
    }
     //Kernfunktion, ersetzt einen gegebenen Platzhalter
    protected function addElement($placeholder, $element) {

        $regex = '/[%]{2}'; //der Platzhalter in den Rohdaten beginnt mit %%
        $regex .= $placeholder;
        $regex .= '[%]{2}/'; //und endet mit %%
         //ersetze %%PLATZHALTER%% mit $element
        preg_replace($regex, $element, $this -> templateFile);

    }

}
Folgende Klasse erbt nun von ihr:

PHP:
class HtmlBasicFrame extends HtmlTemplateEngine {
        //Enthält das Grundgerüst für die Seite
        private $basicFrame = "include/template/basic.tpl";

        private $documentTitle;

        private $documentLanguage;
        //Elemente der Tab Navigation
        private $documentTabs = array();
        //Container der Tab Navigation
        private $documentTabContainer = array();
        

        function __construct() {
            parent::__construct($this->basicFrame);
        }

        private function addTab($name, $container) {
            array_push($this->documentTabs, "<li><a href=#" . $container . ">" . $name . "</a></li>");
        }

        public function addTabContainer($name, $container) {
            $this->addTab($name, $container);
            array_push($this->documentTabContainer, $container);
        }

        public function addTitle($title) {
            $this->documentTitle = $title;
        }
        //Füge Elemente in das Gerüst ein
        public function render() {
            $tmp = "";
            parent::addElement("TITLE", $this->documentTitle);
            foreach($this->documentTabs as $tab) {
                $tmp .= $tab;
            }
            parent::addElement("TABS", $tmp);
            $tmp = "";
            foreach($this->documentTabContainer as $container) {
                $tmp .= $container;
            }
            parent::addElement("TAB_CONTAINER", $tmp);
            
            echo parent::getTemplateFile();
        }

    }
Der Aufruf erfolgt beispielsweise wie folgt:

PHP:
$document = new HtmlBasicFrame();

$document->addTitle("Welcome, please login");
$document->addTabContainer("Login", "login-container");

$document-> render();
Der Output jedoch enthält noch meine Platzhalter, es wurde also nichts ersetzt. Ich vermute den Fehler bei meiner RegEx, jedoch habe ich die schon erfolgreich getestet. Was mach ich falsch?

Danke für eure Hilfe :)


MFG
 

Talirion

People Fotograf

PSD Beta Team
AW:
PHP:
 Probleme mit Suchpattern und preg_replace[/b]

wenn ich es auf die schnelle richtige sehe bzw. richtig in erinnerung habe sollte das der fehler sein:
[php]
protected function addElement($placeholder, $element) {
   ...
   preg_replace($regex, $element, $this -> templateFile);
sollte so heißen:
PHP:
protected function addElement($placeholder, $element) {
   ...
   $this -> templateFile = preg_replace($regex, $element, $this -> templateFile);
oder?

LG
 
Zuletzt bearbeitet:

Crackp0t

Aktives Mitglied

AW:
PHP:
 Probleme mit Suchpattern und preg_replace[/b]

Da habe ich den Wald vor lauter Bäumen nicht gesehn.
Kommt davon wenn man so viel auf einmal runterschriebt ohne zu testen. :D
Danke!
 

Talirion

People Fotograf

PSD Beta Team
AW:
PHP:
 Probleme mit Suchpattern und preg_replace[/b]

na da bin ich aber froh ;-) sowas ist oftmals am blödsten zu finden ...

viel erfolg noch
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.158
Beiträge
2.581.880
Mitglieder
67.226
Neuestes Mitglied
Alec168
Oben