Also, ich poste am besten nochmal alles.
PHP-Code:
function get_template($infile, $loopvars=false, $vars=false)
{
$tempfile=file($infile.'.tpl');
if($tempfile)
{
for($i=0;$i<count($tempfile);$i++) $template.=$tempfile[$i];
$count=preg_match_all('/\[(.+)\]/U',$template,$matches);
for($i=0;$i<count($matches[0]);$i++)
{
$results=explode(' ',$matches[1][$i]);
$templatefunction=$results[0];
if($results[1] && $results[2]);
{
$key=$results[1];
$value=$results[2];
}
if($results[1]) $parametre=$results[1];
switch($templatefunction)
{
case 'if': $template=str_replace($matches[0][$i],"<?php if($$key==$$value):?>",$template); break;
case '/if': $template=str_replace($matches[0][$i],"<?php endif;?>",$template); break;
case 'loop': $template=str_replace($matches[0][$i],"<?php for($i=0;$i<count($loopvars['$parametre']);$i++):?>",$template); break;
case '/loop': $template=str_replace($matches[0][$i],"<?php endfor;?>",$template); break;
}
}
$count=preg_match_all('/\{(.+)\}/U',$template,$matches);
echo '<pre>';
print_r($matches);
echo '</pre>';
for($i=0;$i<count($matches[0]);$i++)
{
$results=preg_split('/:|->/',$matches[1][$i]);
echo '<pre>';
print_r($results);
echo '</pre>';
if($loopvars[$results[0]]) $template=str_replace($matches[0][$i],"<?php echo $loopvars['$results[0]'][$i]['$results[1]'];?>",$template);
if($vars[$results[0]] && $vars[$results[1]]) $template=str_replace($matches[0][$i],"<?php echo $vars['$results[0]']['$results[1]'];?>",$template);
if($vars[$results[0]] && (!$results[1])) $template=str_replace($matches[0][$i],"<?php echo $vars['$results[0]'];?>",$template);
}
$outfile=fopen($infile.'.out','w');
if($outfile)
{
fwrite($outfile,$template);
fclose($outfile);
include($infile.'.out');
//unlink($infile.'.out');
}
}
}
Als Beispiel: index.php
PHP-Code:
$loopvars['test'][0]['inhalt']='Datensatz1';
$loopvars['test'][1]['inhalt']='Datensatz2';
$loopvars['text'][0]['inhalt']='Textinhalt1';
$loopvars['text'][1]['inhalt']='Textinhalt2';
$vars['css']='css/home.css';
$vars['REMOTE_ADDRESS']=$_SERVER['REMOTE_ADDR'];
$vars['HOST_ADDRESS']=$_SERVER['HTTP_HOST'];
$vars['lang']['image']='Bild';
$vars['artikel']=$_GET['artikel'];
$vars['lang']['or']='oder';
get_template('templates/header', false, $vars);
get_template('templates/index', $loopvars, $vars);
get_template('templates/footer', false, $vars);
Dazu das Template header.tpl:
Code:
<link rel="stylesheet" type="text/css" href={css}>
<object data="./bilder/Deutschlandfahne.svg" type="image/svg+xml" width="100%" height="300px">{lang->image}: Deutschlandfahne.svg</object>
<font>
<table width="100%">
<tr><td valign="top">
<table>
<tr><td valign="top" class="table menue">
<a href="?artikel=Dies ist meine erste Homepage"><h1>Home</h1></a>
<a href="?artikel=computer">Computer</a><br>
<a href="?artikel=fahnen">Fahnen</a><br>
<a href="?artikel=grafikkarten">Grafikkarten</a>
<hr />
<h1><center>SVG - Scripte</center></h1>
<a href="?grafik=Fahne">SVG-Fahne</a>
<a href="?grafik=Liebeserklaerung">Liebeserklärung</a>
</td>
</tr>
</table>
</td>
index.tpl:
Code:
<td>
<table width="100%">
<tr>
<td><h1><center>{artikel}</center></h1><hr></td>
</tr>
[loop text]
<tr>
<td>{text->inhalt}</td>
</tr>
<tr>
[loop test]
<td>{test:inhalt}</td>
[if login admin]
<td>{test:admin->logout}</td>
[/if]
[/loop]
</tr>
[/loop]
<td>
<table width="100%">
<tr>
<td><h1><center>{artikel}</center></h1><hr></td>
</tr>
[loop text]
<tr>
<td>{text->inhalt}</td>
</tr>
<tr>
[loop test]
<td>{test:inhalt}</td>
[if login admin]
<td>{test:admin->logout}</td>
[/if]
[/loop]
</tr>
[/loop]
</table>
</tr>
</table>
</tr>
und footer.tpl:
Code:
<tr><td colspan="3"><link rel="stylesheet" type="text/<?php echo $vars['css'];?>" href={<?php echo $vars['css'];?>}>
<object data="./bilder/Deutschlandfahne.svg" type="image/svg+xml" width="100%" height="300px">{lang->image}: Deutschlandfahne.svg</object>
<font>
<table width="100%">
<tr><td valign="top">
<table>
<tr><td valign="top" class="table menue">
<a href="?artikel=Dies ist meine erste Homepage"><h1>Home</h1></a>
<a href="?artikel=computer">Computer</a><br>
<a href="?artikel=fahnen">Fahnen</a><br>
<a href="?artikel=grafikkarten">Grafikkarten</a>
<hr />
<h1><center>SVG - Scripte</center></h1>
<a href="?grafik=Fahne">SVG-Fahne</a>
<a href="?grafik=Liebeserklaerung">Liebeserklärung</a>
</td>
</tr>
</table>
</td>
<hr>
Internet: {HOST_ADDRESS}<br /><br />
E-Mail: <a href="mailto:quickjoe@web.de">quickjoe@web.de</a> {lang->or} <a href="mailto:aldifahne@freenet.de">aldifahne@freenet.de</a><br /><br />
<hr>
Ihre IP-Adresse ist: {REMOTE_ADDRESS}
</td></tr>
</table>
Und dann noch die Ausgabedateien um den ganzen Code nachvollziehen zu können.
header.out:
PHP-Code:
<link rel="stylesheet" type="text/<?php echo $vars['css'];?>" href={<?php echo $vars['css'];?>}>
<object data="./bilder/Deutschlandfahne.svg" type="image/svg+xml" width="100%" height="300px">{lang->image}: Deutschlandfahne.svg</object>
<font>
<table width="100%">
<tr><td valign="top">
<table>
<tr><td valign="top" class="table menue">
<a href="?artikel=Dies ist meine erste Homepage"><h1>Home</h1></a>
<a href="?artikel=computer">Computer</a><br>
<a href="?artikel=fahnen">Fahnen</a><br>
<a href="?artikel=grafikkarten">Grafikkarten</a>
<hr />
<h1><center>SVG - Scripte</center></h1>
<a href="?grafik=Fahne">SVG-Fahne</a>
<a href="?grafik=Liebeserklaerung">Liebeserklärung</a>
</td>
</tr>
</table>
</td>
index.out:
PHP-Code:
<td>
<table width="100%">
<tr>
<td><h1><center>{artikel}</center></h1><hr></td>
</tr>
<?php for($i=0;$i<count($loopvars['text']);$i++):?>
<tr>
<td>{<?php echo $loopvars['text'][$i]['inhalt'];?>}</td>
</tr>
<tr>
<?php for($i=0;$i<count($loopvars['test']);$i++):?>
<td>{<?php echo $loopvars['test'][$i]['inhalt'];?>}</td>
<?php if($login==$admin):?>
<td>{<?php echo $loopvars['test'][$i]['admin'];?>}</td>
<?php endif;?>
<?php endfor;?>
</tr>
<?php endfor;?>
</table>
</tr>
footer.out:
PHP-Code:
<tr><td colspan="3">
<hr>
Internet: {<?php echo $vars['HOST_ADDRESS'];?>}<br /><br />
E-Mail: <a href="mailto:quickjoe@web.de">quickjoe@web.de</a> {lang->or} <a href="mailto:aldifahne@freenet.de">aldifahne@freenet.de</a><br /><br />
<hr>
Ihre IP-Adresse ist: {<?php echo $vars['REMOTE_ADDRESS'];?>}
</td></tr>
</table>
und bevor ich es vergesse die Seitenausgabe als Quelltext:
HTML-Code:
<pre>Array
(
[css] => css/home.css
[REMOTE_ADDRESS] => 127.0.0.1
[HOST_ADDRESS] => www.fahnensex.de
[lang] => Array
(
[image] => Bild
[or] => oder
)
[artikel] =>
)
1</pre><pre>Array
(
[0] => Array
(
[0] => {css}
[1] => {lang->image}
)
[1] => Array
(
[0] => css
[1] => lang->image
)
)
</pre><pre>Array
(
[0] => css
)
</pre><pre>Array
(
[0] => lang
[1] => image
)
</pre><link rel="stylesheet" type="text/css" href=css/home.css>
<object data="./bilder/Deutschlandfahne.svg" type="image/svg+xml" width="100%" height="300px">{lang->image}: Deutschlandfahne.svg</object>
<font>
<table width="100%">
<tr><td valign="top">
<table>
<tr><td valign="top" class="table menue">
<a href="?artikel=Dies ist meine erste Homepage"><h1>Home</h1></a>
<a href="?artikel=computer">Computer</a><br>
<a href="?artikel=fahnen">Fahnen</a><br>
<a href="?artikel=grafikkarten">Grafikkarten</a>
<hr />
<h1><center>SVG - Scripte</center></h1>
<a href="?grafik=Fahne">SVG-Fahne</a>
<a href="?grafik=Liebeserklaerung">Liebeserklärung</a>
</td>
</tr>
</table>
</td>
<pre>Array
(
[0] => Array
(
[0] => {artikel}
[1] => {text->inhalt}
[2] => {test:inhalt}
[3] => {test:admin->logout}
)
[1] => Array
(
[0] => artikel
[1] => text->inhalt
[2] => test:inhalt
[3] => test:admin->logout
)
)
</pre><pre>Array
(
[0] => artikel
)
</pre><pre>Array
(
[0] => text
[1] => inhalt
)
</pre><pre>Array
(
[0] => test
[1] => inhalt
)
</pre><pre>Array
(
[0] => test
[1] => admin
[2] => logout
)
</pre><td>
<table width="100%">
<tr>
<td><h1><center>{artikel}</center></h1><hr></td>
</tr>
<tr>
<td>Textinhalt1</td>
</tr>
<tr>
<td>Datensatz1</td>
<td></td>
<td>Datensatz2</td>
<td></td>
</tr>
</table>
</tr>
<pre>Array
(
[0] => Array
(
[0] => {HOST_ADDRESS}
[1] => {lang->or}
[2] => {REMOTE_ADDRESS}
)
[1] => Array
(
[0] => HOST_ADDRESS
[1] => lang->or
[2] => REMOTE_ADDRESS
)
)
</pre><pre>Array
(
[0] => HOST_ADDRESS
)
</pre><pre>Array
(
[0] => lang
[1] => or
)
</pre><pre>Array
(
[0] => REMOTE_ADDRESS
)
</pre><tr><td colspan="3">
<hr>
Internet: www.fahnensex.de<br /><br />
E-Mail: <a href="mailto:quickjoe@web.de">quickjoe@web.de</a> {lang->or} <a href="mailto:aldifahne@freenet.de">aldifahne@freenet.de</a><br /><br />
<hr>
Ihre IP-Adresse ist: 127.0.0.1</td></tr>
</table>
Jetzt sollte in etwa klar sein, wie das ganze funktioniert.
Bis auf das ersetzen von {lang->image} ... funktioniert alles.