Ein Template zeilenweise anwenden

Beispiel ausführen

Eine etwas speziellere Funktion um Platzhalter zu ersezten.

Die Eingabe wird zeilenweise auf ein einzeiliges Template angewandt.
Es gibt zwei Platzhalter, "_$_" wird durch die Eingabe ersetzt und "#n#" fortlaufend inkrementiert.

Damit lassen sich z.B. schnell Folgen von <option> oder <li> Tags erstellen.

<?php

/**
* Zeilenweises ergänzen eines Template
*
* #n# increment (start n)
* _$_ Zeile
*/


function LineTemplate($s$tpl)
{
    
$rv '';
    
$arr explode("\n"$s);
    
    foreach (
$arr as $item){
        
$item trim($item);
        if (empty(
$item)){
            continue;
        }
        
$tmp str_replace('_$_'$item$tpl);
        
        
$tmp preg_replace('/#(\d+)#/e''isset($n)?++$n:$n=\1'$tmp);
        
        
$rv .= $tmp."\n";
    
    }
    return 
$rv;

}








if (isset(
$_POST['msg']) && !empty($_POST['msg'])){


    
$_POST['msg'] = get_magic_quotes_gpc()
        ? 
stripslashes($_POST['msg'])
        : 
$_POST['msg'];


    
$_POST['tpl'] = get_magic_quotes_gpc()
        ? 
stripslashes($_POST['tpl'])
        : 
$_POST['tpl'];


    echo 
'<pre>'.htmlentities(LineTemplate($_POST['msg'], $_POST['tpl']), ENT_COMPAT'UTF-8').'</pre>';



    
$msg htmlentities($_POST['msg'], ENT_COMPAT'UTF-8');
    
$tpl htmlentities($_POST['tpl'], ENT_COMPAT'UTF-8');
}else{
   
$msg = <<<EOT
A
B
C
EOT;
$tpl htmlentities('<option value="#1#">_$_</option>');
}

echo <<< EOT
<form method="post" action="{$_SERVER['PHP_SELF']}">
<label>Eingabe, wird zeilenweise abgearbeitet.</label>
 <textarea name="msg" rows="10" cols="70">
$msg</textarea>
<br/><br />
<label>Template</label>
<input type="text" name="tpl" size="100" value="
$tpl" />

 <input type="submit" value="anwenden">
</form>

EOT;

?>

Benutzte Funktionen


Hinweise zum DatenschutzImpressum © 2005-2008 S. Eickhoff