Mein Ziel ist eigentlich ein relativ einfacher Template Parser , aber das ganze treibt mich noch zum Selbstmord.
Der Ablauf des Skripts soll hinterher so functionieren
1. Parser Klasse wird geöffnet und Pfad zur Templatedatei und die einzufügenden Daten werden übergeben.
2. Zeile für Zeile wird nach den Platzhaltern durchsucht wenn ein Platzhalter
gefunden wurde wird die Zeile nochmals durchsucht, ansonsten wird sie in ein array geschrieben und es wird mit der nächsten Zeile weiter gemacht... usw.
So weit so gut
, nur ärgert mich mein Script es gibt mir nicht nur die Zeilen aus in dennen keine Platzhalter mehr gefunden wurden (ob jetzt keine drin waren oder die vorhandenen ersetzt wurden) es gibt mir alle möglichkeiten aus. BSP:
In der datei steht
{name}
{alter}
{beruf}
einzufügende daten
{name} = ziege
{alter} = 23
{beruf} = {name}nhirte
AUSGABE:
ziege
{name}
23
{alter}
ziegenhirte
{name}nhirte
{beruf}
Das ist das Skript:
schonmal danke im vorraus
gruss kai

Der Ablauf des Skripts soll hinterher so functionieren
1. Parser Klasse wird geöffnet und Pfad zur Templatedatei und die einzufügenden Daten werden übergeben.
2. Zeile für Zeile wird nach den Platzhaltern durchsucht wenn ein Platzhalter
gefunden wurde wird die Zeile nochmals durchsucht, ansonsten wird sie in ein array geschrieben und es wird mit der nächsten Zeile weiter gemacht... usw.
So weit so gut

In der datei steht
{name}
{alter}
{beruf}
einzufügende daten
{name} = ziege
{alter} = 23
{beruf} = {name}nhirte
AUSGABE:
ziege
{name}
23
{alter}
ziegenhirte
{name}nhirte
{beruf}
Das ist das Skript:
Code:
<?php class parser { function parser($template_path,$data) { $this->data = $data; $this->template_path = $template_path; $this->pull_template(); $this->line_change(); echo implode (" ",$this->template_log); } function pull_template() { $template_file = fopen($this->template_path,"r"); while(!feof($template_file)) { $template[] = fgets($template_file); } fclose($template_file); $this->template = $template; } function line_change() { foreach ($this->template as $template_line) { $this->checkit = true; $this->check($template_line); } } function check($template_line) { if ($this->checkit == true) { $data = $this->data; foreach($data as $key => $value) { $data_key = "{".$key."}"; $data_value = $value; if(ereg($data_key,$template_line)) { $this->checkit = true; $this->charge($data_key,$data_value,$template_line); } else { $this->checkit = false; } } $this->check($template_line); } elseif ($this->check == false){ $this->template_log[] = $template_line; } } function charge($data_key,$data_value,$template_line) { $template_line = str_replace($data_key,$data_value,$template_line); $this->check($template_line); } }// END class $template_path = "data.txt"; $data = array( "title" => "Test", "beruf" => "bauer", "name" => "Kai", "ort" => "Bo{title}chum" ); $parser = new parser($template_path,$data); ?>
schonmal danke im vorraus
gruss kai
Kommentar