Anzeige

[PHP] Probleme mit Suchpattern und preg_replace

[PHP] Probleme mit Suchpattern und preg_replace | PSD-Tutorials.de

Erstellt von Crackp0t, 31.07.2012.

  1. Crackp0t

    Crackp0t Aktives Mitglied

    Dabei seit:
    09.11.2006
    Beiträge:
    306
    Geschlecht:
    männlich
    Software:
    Adobe Production Premium, GIMP, NP++, Aptana Studio, Eclipse
    [PHP] Probleme mit Suchpattern und preg_replace
    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:
    1.  
    2. abstract class HtmlTemplateEngine {
    3.      //Datei in welcher die Rohdaten mit den Platzhaltern stehen
    4.     private $templateFile;
    5.      //Dieser Konstruktor wird von der abgeleiteten Klasse aufgerufen
    6.     public function __construct($template) {
    7.  
    8.         $this -> templateFile = file_get_contents($template);
    9.         if ($this -> templateFile == FALSE) {
    10.             printf("can't open template file %s", $template);
    11.         }
    12.  
    13.     }
    14.      //Wird am ende aufgerufen um die bearbeiteten Daten zu erhalten
    15.     protected function getTemplateFile() {
    16.         return $this -> templateFile;
    17.     }
    18.      //Kernfunktion, ersetzt einen gegebenen Platzhalter
    19.     protected function addElement($placeholder, $element) {
    20.  
    21.         $regex = '/[%]{2}'; //der Platzhalter in den Rohdaten beginnt mit %%
    22.         $regex .= $placeholder;
    23.         $regex .= '[%]{2}/'; //und endet mit %%
    24.          //ersetze %%PLATZHALTER%% mit $element
    25.         preg_replace($regex, $element, $this -> templateFile);
    26.  
    27.     }
    28.  
    29. }
    30.  
    Folgende Klasse erbt nun von ihr:

    PHP:
    1.  
    2. class HtmlBasicFrame extends HtmlTemplateEngine {
    3.         //Enthält das Grundgerüst für die Seite
    4.         private $basicFrame = "include/template/basic.tpl";
    5.  
    6.         private $documentTitle;
    7.  
    8.         private $documentLanguage;
    9.         //Elemente der Tab Navigation
    10.         private $documentTabs = array();
    11.         //Container der Tab Navigation
    12.         private $documentTabContainer = array();
    13.        
    14.  
    15.         function __construct() {
    16.             parent::__construct($this->basicFrame);
    17.         }
    18.  
    19.         private function addTab($name, $container) {
    20.             array_push($this->documentTabs, "<li><a href=#" . $container . ">" . $name . "</a></li>");
    21.         }
    22.  
    23.         public function addTabContainer($name, $container) {
    24.             $this->addTab($name, $container);
    25.             array_push($this->documentTabContainer, $container);
    26.         }
    27.  
    28.         public function addTitle($title) {
    29.             $this->documentTitle = $title;
    30.         }
    31.         //Füge Elemente in das Gerüst ein
    32.         public function render() {
    33.             $tmp = "";
    34.             parent::addElement("TITLE", $this->documentTitle);
    35.             foreach($this->documentTabs as $tab) {
    36.                 $tmp .= $tab;
    37.             }
    38.             parent::addElement("TABS", $tmp);
    39.             $tmp = "";
    40.             foreach($this->documentTabContainer as $container) {
    41.                 $tmp .= $container;
    42.             }
    43.             parent::addElement("TAB_CONTAINER", $tmp);
    44.            
    45.             echo parent::getTemplateFile();
    46.         }
    47.  
    48.     }
    49.  
    Der Aufruf erfolgt beispielsweise wie folgt:

    PHP:
    1.  
    2. $document = new HtmlBasicFrame();
    3.  
    4. $document->addTitle("Welcome, please login");
    5. $document->addTabContainer("Login", "login-container");
    6.  
    7. $document-> render();
    8.  
    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
     
    #1      
  2. Talirion

    Talirion People Fotograf PSD Beta Team

    545
    Dabei seit:
    10.10.2004
    Beiträge:
    1.187
    Geschlecht:
    männlich
    Ort:
    Dresden
    Software:
    PS CS 6 ext.; LR4; WACOM
    Kameratyp:
    Nikon D800
    [PHP] Probleme mit Suchpattern und preg_replace
    AW:
    PHP:
    1.  Probleme mit Suchpattern und preg_replace[/b]
    2.  
    3. wenn ich es auf die schnelle richtige sehe bzw. richtig in erinnerung habe sollte das der fehler sein:
    4. [php]
    5. protected function addElement($placeholder, $element) {
    6.    ...
    7.    preg_replace($regex, $element, $this -> templateFile);
    8.  
    sollte so heißen:
    PHP:
    1.  
    2. protected function addElement($placeholder, $element) {
    3.    ...
    4.    $this -> templateFile = preg_replace($regex, $element, $this -> templateFile);
    5.  
    oder?

    LG
     
    Zuletzt bearbeitet: 31.07.2012
    #2      
  3. Crackp0t

    Crackp0t Aktives Mitglied

    Dabei seit:
    09.11.2006
    Beiträge:
    306
    Geschlecht:
    männlich
    Software:
    Adobe Production Premium, GIMP, NP++, Aptana Studio, Eclipse
    [PHP] Probleme mit Suchpattern und preg_replace
    AW:
    PHP:
    1.  Probleme mit Suchpattern und preg_replace[/b]
    2.  
    3. Da habe ich den Wald vor lauter Bäumen nicht gesehn.
    4. Kommt davon wenn man so viel auf einmal runterschriebt ohne zu testen. :D
    5. Danke!
     
    #3      
  4. Talirion

    Talirion People Fotograf PSD Beta Team

    545
    Dabei seit:
    10.10.2004
    Beiträge:
    1.187
    Geschlecht:
    männlich
    Ort:
    Dresden
    Software:
    PS CS 6 ext.; LR4; WACOM
    Kameratyp:
    Nikon D800
    [PHP] Probleme mit Suchpattern und preg_replace
    AW:
    PHP:
    1.  Probleme mit Suchpattern und preg_replace[/b]
    2.  
    3. na da bin ich aber froh ;-) sowas ist oftmals am blödsten zu finden ...
    4.  
    5. viel erfolg noch
     
    #4      
Seobility SEO Tool
x
×
×