variable in {} ausgeben

SuReBuRn

Mitglied
Hallo!

ich möchte gerne in einer datei folgendes ausgeben lassen {var}
so dass der wert wert in $var ohne <? echo $var ?> ausgegeben werden kann. wie mache ich denn sowas ?
 
Zuletzt bearbeitet:
Hallo,

das heißt du möchtest eine Variable ohne php Tags ( <?, <?php, ?> ) ausgeben?
Soweit mir bekannt ist ist das leider nicht möglich.

P.S.: Lass mich aber gerne belehren. :)

Tobee
 
Naja sowas in der art:

<?
$str = "tach {username}";
$str = str_replace("{username}", "schiessmichtot", $str);
echo $str;
?>

Nur möchte ich ein Template index.tpl einfügen ( momentan mach ich das via include() ); und alle Variablen mit {} ausgeben lassen, ohne jedesmal diesen Code da pben für jede var benutzen zu müssen... nur weiss ich leider nicht wie.
 
Zuletzt bearbeitet:
Entweder du musst das für jeden Platzhalter erstellen, oder du verwendest eben so eine Klasse. Anders geht das nicht.
 
Sorry.. Hatte schon abgesendet und deinen Beitrag nicht gelesen... kann ich die Platzhalter auch benutzen, ohne direkt eine ganze Templateklasse zu benutzen? Wenn ja, wie ?
 
Zuletzt bearbeitet:
Kannst du. Musst dann halt selber etwas schreiben, dass dir die Platzhalter ersetzt. Z.B. dein Codebeispiel (stzr_replace()) für jeden der Platzhalter. So eine Klasse ist da allerdings schon komfortabler.
 
Danke fanste für diene Hilfe. Habe mir dein Tut etwas angeschaut und mir ne eigene Klasse, auf mich zugeschnitten, gebastelt!
Nun wollte ich noch fragen ob du ein Beispiel hast, wie ich eine while schleife ähnlich lösen kann?
 
Na bei einer While Schleife müsstest Du eigentlich nur immer die neuen Platzhalter Values ersetzen.
Ich hab mir selber mal einen Template Parser gemacht , und je länger man damit mal arbeitet desto mehr kommt man dann auch mit der Funktionsweise von Templates klar, und findet lücken und Probleme :)

Die Templates sahen bei mir so aus :

HTML:
   <select>{$OPTIONFIELDLIST}</select>

und das mit der andere sah dann halt so aus:
HTML:
   <option value="{$IMGFILE}">{$VALUE}</option>

PHP:
<?php
//nur mal zur Übersicht mit hier rein , da ich hier das Array für die Werte der Select
//Builder Form herbekomme.
// Map Loader Modul
function loadMap()
    {
        $directory = "templates/Images/maps";
        
        //Verzeichniss zum lesen öffnen
        if(is_dir($directory) && $dirHandler = opendir($directory) )
            {
                //verzeichniss durchlaufen
                while($file = readdir($dirHandler))
                    {                        //prüfen das der aktuelle File auch eine Datei ist 
                        if($file != '.' && $file != '..' && is_file($directory.'/'.$file))
                            {
                                $loadedMapImages[] = $directory.'/'.$file;
                            }
                    }
            }
        fclose($dirHandler);
        return $loadedMapImages;
    }

function buildSelectForm($valueArray)
    {
        //load SelectMainForm Template
        $selectTemplate = new TemplateParser('selectField.tpl','templates');
        $selectForm = $selectTemplate->getLoadedTemplate();

        //load OptionField Template
        $optionTemplate = new TemplateParser('optionField.tpl','templates');
        $optionFields = $optionTemplate->getLoadedTemplate();
        
        $optionContent = '';
        
        $searchValues[] = '{$VALUE}';
        $searchValues[] = '{$IMGFILE}';
        
        for($i = 0;$i< count($valueArray);$i++)
            {
                $optionValue = substr(basename($valueArray[$i]),0,strrpos(basename($valueArray[$i]),'.'));
                $replaceValue[] = $optionValue;
                $replaceValue[] = $valueArray[$i];
                $optionContent .= str_replace($searchValues,$replaceValue,$optionFields);
                unset($replaceValue);
            }
            
        $fullSelectField = str_replace('{$OPTIONFIELDLIST}',$optionContent,$selectForm);
        
        return $fullSelectField;
    }

//aufruf
buildSelectForm(loadMap());
?>

Diese beiden Zeilen sind für meinen Template Parser von Bedeutung an der Stelle.
PHP:
        $selectTemplate = new TemplateParser('selectField.tpl','templates');
        $selectForm = $selectTemplate->getLoadedTemplate();

Hier passiert quasi nix anderes als das das Teplate geöffnet wird , im Constructor noch einschliesslich geprüft ob es eine gültige Datei ist etc. Und getLoadedTemplate bekommt nur das ausgelesene Template File zurück das mittels einer While Schleife und fgets eingelesen wurde.Also nix mystisches dabei.

Am Ende kommt ein komplettes Select Field dabei raus. Also müsste man in der Template Klasse nun eigentlich nur die Methode unterbringen die das nach und nach ersetzt und man nur die Array Werte reinschubst , die Namen der Variablen und dann noch den Ersatz festlegen.
 
Zurück