Hi hab mir nen kleines Templatesystem geschrieben geht auch soweit auch das mit den Schleifen bis auf eine Sache:
Wenn ich jetzt in einer schleife zB folgendes zu stehen hab
<a href="link.php?id={%platzhalter%}">{%platzhalter2%}</a>
spinnt er rum und parst mir den rest in der Schleife nicht mehr richtig.
(liegt am ersten platzhalter im link das hab ich schon rausbekommen nur warum nicht)
hier mal die Funktion für die Schleifen.
die Variablen (Arrays) zu den Schleifen sind dann folgendermaßen aufgebaut:
HTMLgeht)
HTMLwürde nicht geht)
Code ist nicht gerade der beste hoffe aber das man trotzdem durchblickt.
mfg
et
Wenn ich jetzt in einer schleife zB folgendes zu stehen hab
<a href="link.php?id={%platzhalter%}">{%platzhalter2%}</a>
spinnt er rum und parst mir den rest in der Schleife nicht mehr richtig.
(liegt am ersten platzhalter im link das hab ich schon rausbekommen nur warum nicht)
hier mal die Funktion für die Schleifen.
PHP-Code:
function replace($search,$replace)
{
if(!is_array($replace))
{
$this->content = str_replace("{%".$search."%}", $replace, $this->content);
}
else
{
preg_match_all("/<--- BEGIN name=".$search."--->(.*?)<--- END name=".$search."--->/si"
, $this->content, $muster, PREG_PATTERN_ORDER);
$musterneu =preg_replace("/<--- BEGIN name=".$search."--->(.*?)<--- END name=".$search."--->/is"
, "\\1", $muster[0][0]);
//zählt die zu ersetzenden arrayelemente und speichert sie in $i
$count=count($replace);
$i=0;
//sucht die zu ersetzende namen raus bsp {%ersetzen.name%} << name wird gespeichert usw
preg_match_all("/{%".$search.".(.*?)%}/U", $musterneu, $zeichen, PREG_PATTERN_ORDER);
//zählt die anzahl und speicher sie in $count2
$count2=count($zeichen[1]);
//schleife solange laufen lassen bis alle arrayelemte eingesetzt wurden
while($i<$count)
{
//zählervariable
$x=0;
//speichert das neue ersetzende muster ab
$muster2=$musterneu;
//schleife solange laufen lassen bis alle platzhalter ersetzt wurden
while($x<$count2)
{
$zeichen2=$zeichen[1][$x];
$z=strlen($zeichen2);
$muster2 =str_replace("{%".$search.".".$zeichen2."%}", $replace[$i][$zeichen2], $muster2);
$x++;
}
$ausgabe .=$muster2;
$i++;
}
//platzhalter code mit dem geparsten teil ersetzen
$this->content =preg_replace("/<--- BEGIN name=".$search."--->(.*?)<--- END name=".$search."--->/si"
, $ausgabe,$this->content);
}
}
PHP-Code:
$ersetze = array();
array_push($ersetzen, Array(
"name" => $name,
"alter" => $alter,
)
);
array_push($ersetzen Array(
"name" => $name2,
"alter" => $alter2,
)
);
Code:
Array ( [0] => Array ( [name] => name [alter] => alter ) [1] => Array ( [name] => name2 [alter] => alter2 ) )
Code:
<--- BEGIN name=ersetzen---> {%ersetzen.name%}<br> {%ersetzen.alter%} <--- END name=ersetzen--->
HTMLwürde nicht geht)
Code:
<--- BEGIN name=ersetzen---> <a href="link.php?alter={%ersetzen.alter%}">{%ersetzen.name%}</a><br> <--- END name=ersetzen--->
mfg
et
Kommentar