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:
	
	HTML geht)
geht)
	
HTML würde nicht geht)
wü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 ) )
 geht)
geht)Code:
	
	<--- BEGIN name=ersetzen--->	
{%ersetzen.name%}<br>
{%ersetzen.alter%}
<--- END name=ersetzen--->
HTML
 würde nicht geht)
würde nicht geht)Code:
	
	<--- BEGIN name=ersetzen--->	
<a href="link.php?alter={%ersetzen.alter%}">{%ersetzen.name%}</a><br>
<--- END name=ersetzen--->
mfg
et
 
          
 
							
						
Kommentar