Ist da irgend etwas bekannt, dass die Funktion str_replace Probleme mit ein von den beiden Zeichen '-', '>' oder auch beide z.B. '->'
Ich will sie in einem String ersetzen lassen.
Ich will sie in einem String ersetzen lassen.
$string = "foo -> bar";
echo str_replace(array("-", ">"), array("+", "<"), $string);
// foo +< bar
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');
}
}
}
case 'if': $template=str_replace($matches[0][$i],"<?php if($$key==$$value):?>",$template);
<?php
case 'if': $template=str_replace($matches[0][$i],"<?php if($$key==$$value):?>",$template);
?>
$results=preg_split('/:|->/',$matches[1][$i]);
Kommentar