PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Formatierung nicht ganz klar...


Skyman
13.09.2005, 18:21:21
Hallo Leutz,

ich brauche mal wieder eine Hilfe von euch, da ich nicht mehr durchblicke mit den ganzen Notationen oder vielleicht geht es auch gar nicht.

Habe mir für meine Seiten eine Templategestalltung überlegt um den ganzen HTML Text nicht mit in den PHP Dateien zu haben und es einfacher ändern zu können. Also habe ich ein bißchen zusammengesucht und gebastelt, soweit geht es. Jetzt habe ich aber ein Problem, das ich ggf. HTML und PHP nicht mehr kombinieren kann, also mal eben den HTML String unterbrechen, PHP ausführen und HTML String weiter.

Beispiel Template test.htm:

<font id=daten>'.number_format(vers_rechner(20, 'Zone1'), 2, ',', '.').'</font>

hier steht also ein wenig HTML und es soll mal eben eine formatierte Zahl ausgegeben werden, dazu wird eine standard und eine eigene function aufgerufen.
Das klappte früher ganz einfach, da gab es folgende Notation:

$ausgabe = ' ...
viel HTML Text
...
<font id=daten>'.number_format(vers_rechner(20, 'Zone1'), 2, ',', '.').'</font>
... noch mehr Text
';

fertig und raus damit, alles prima...

Der jetzige Aufruf aus der eigentlichen PHP Datei lautet wie folgt:

...
eval ("\$articles.= \"".getTemplate("test")."\";");
...

wobei getTemaplate die Datei test.htm ausliest und die " durch \" ersetzt, damit es in PHP zu keinem Fehler kommt.

Wo mache ich den Gedankenfehler. Er gibt mir die PHP function oben aus test.htm aus wie Text, also nix Interpretation.
Wie muß ich den String nun notieren, bei Variablen ist es auch ganz komisch, statt z.B. ...html-text...'.$array["inh"].'...text
schreibe ich jetzt einfach ...html-text...$array[inh]...text

Auch hier keine richtige Notation mehr und keine Anführungszeichen, egal ob einfach, zweifach oder sonst was, das funzt aber...

Hoffe, ihr steigt durch und könnt mir helfen, danke

Gruß
Martin

xabbuh
13.09.2005, 21:06:15
Warum jagst du das Template durch eval() und gibt es nicht einfach direkt aus? Wenn du es beispielsweise mit include() einbindest, werden ja auch alle php-Blöcke geparst.

Skyman
14.09.2005, 11:39:22
Moin moin,

hmh, nun ja, eigentlich hast du wohl gar nicht so unrecht, habe da sehr weit gedacht...

...aber wie gesagt, ich hatte mir diverseste Sachen mal angeschaut/abgeschaut, ganz wie man will und mir dann das Konzept für meine Zwecke zusammengestellt.
Tatsache ist, das fast alle großen und kleinen CMS Systeme dieses System so benutzen, daher bin ich auf dieser Schiene gelandet.

Habt ihr vielleicht trotzdem eine Idee was ich falsch gemacht habe?

Kann ich das ggf. genau so parsen lassen wie bei dem include() Befehl? Ich probiers mal aus...

meikel (†)
14.09.2005, 12:33:35
Habt ihr vielleicht trotzdem eine Idee was ich falsch gemacht habe?
Naja, Du hast den Begriff Template wohl falsch verstanden. Ein Template ist wie ein Formular: es besteht aus fixen Angaben und aus variablen Platzhaltern. Letztere werden mittels PHP durch dynamischen Content ersetzt (str_replace() oder preg_replace()).

Ein Template ist definitiv kein halbgares PHP Script, welches mit List und Tücke durch eval() belebt wird.

eval == evil == Hintertür

Skyman
14.09.2005, 12:38:29
Danke meikel für diese deutlichen Worte, die mir die Definition nochmal ins Hirn gerufen haben.

Aber sicher hast du Recht und daraus resultiert ja auch die Flexibilität eines Templates. Ich werde es entsprechend zusammensetzen, so das ich nur die Variablen austauschen muß, dann ist es entsprechend professionell obwohl es nicht minder Arbeit ist... :) :(

feuervogel
14.09.2005, 12:48:57
Danke meikel für diese deutlichen Worte, die mir die Definition nochmal ins Hirn gerufen haben.

Aber sicher hast du Recht und daraus resultiert ja auch die Flexibilität eines Templates. Ich werde es entsprechend zusammensetzen, so das ich nur die Variablen austauschen muß, dann ist es entsprechend professionell obwohl es nicht minder Arbeit ist... :) :(

ooooder du nimmst einfach eine gescheite fertige template-engine...

meikel (†)
14.09.2005, 17:36:08
Ich werde es entsprechend zusammensetzen, so das ich nur die Variablen austauschen muß, dann ist es entsprechend professionell obwohl es nicht minder Arbeit ist... :) :(
Guck Dir KTemplate (http://www.kuerbis.org/template/) (von Ralf Geschke) und die dazugehörigen Beispiele an und versuche, das Verfahren zu verstehen.

Beachte das:
Download
developer version (PHP 5)
stable version (PHP 4)

Vorteile:
- Du lernst einiges über OOP dazu
- Du bekommst eine kleine, feine und sehr fixe Templateengine, die für 95% aller Anwendungsfälle ausreicht
- und Du mußt dieses Fahrrad nicht noch mal neu erfinden. <g>