php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.02.2010, 21:18  
Neuer Benutzer
 
Registriert seit: 08.07.2009
Beiträge: 15
PHP-Kenntnisse:
Anfänger
K.haos befindet sich auf einem aufstrebenden Ast
K.haos eine Nachricht über ICQ schicken
Standard Fehlerhafte Ausgabe mit Platzhaltern duch eval()

Liebe PHP Community ich sitze schon seit einiger Zeit an einem Problem mit der eval Funtion und weiß nicht so recht wie ich die Fehler interpretieren soll.

Ich habe für ein CMS eine Funktion geschrieben die die Platzhalter in einer Template Datei ausliest und ersetzt und dann soll dieser entstandende String mit der eval()-Funktion bearbeitet werden.

PHP-Code:
function replacePlaceholder ($string) {
    while (
strpos ($string'<@@')) {
        
        
$start strpos ($string'<@@') + 3;
        
$ende  strpos ($string'@>') - 0;
        
$weite $ende $start;
    
        
$teil    substr ($string$start$weite);
        
$replace 'dummy_'.$teil;

        
$string str_replace ("<@@".$teil."@>"'$'.$replace$string);
    } 
    print 
$string;
}

function 
getTemplateAsString ($template$endung ".temp.html") {
    if (
file_exists ("system/templates/".$template.$endung."")) {
        
$string file_get_contents ("system/templates/".$template.$endung."");
    } else {
        
$string '<br /><h3 align="center">Es ist ein fehler aufgetreten</h3><br />
                   <h3 align="center">Bitte Informieren sie den Administrator 
                   der Seite</h3>'
;
    }

    
$string replacePlaceholder ($string);
    return 
$string;


PHP-Code:
$dummy_username 'Hendrik Heimers';

eval(
'\$news = "'.getTemplateAsString('news').'";');
echo 
$news
Ausschnitt der Template Datei
Code:
   <td class="preview_top_title">
            <img src="images/layout/preview_icon.ico" width="10" height="10" />&nbsp;<strong>Abenteuer</strong>
            </td>
          </tr>
          <tr>
            <td class"preview_bild">
            	<!-- Bild ausgabe (Important! für PHP)-->
                <img src="images/preview/pic1.jpg" width="270" height="75" />
            </td>
          </tr>
          <tr>
            <td><@@username@></td>
          </tr>
          <tr>
            <td><@@username@></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td class="preview_link">
            <center><a href="#"><strong>Zum Abenteuer Magazin</strong></a></center>
            </td>
          </tr>
        </table>
        <!-- // Abenteuer PREVIEW -->
        </td>
        <td width="24">&nbsp;</td>
        <td>
Es wird was ausgegeben doch es werden nicht die Variablen interpretiert an den stellen wo voher der Platzhater war. Ist vielleicht der String der Templatedatei falsch dürfen bestimmte Sachen nicht gemacht werden? Der Rest der Datei ist ganz normaler XHTML Standart.
Desweiteren folgt dann folgende Fehlermeldung.

Fehlermeldung:
Zitat:
Parse error: syntax error, unexpected T_VARIABLE, expecting T_STRING in C:\Program Files\XAMPP Server\xampp\htdocs\server\projekte\gameportal\gam eportal new\system\content\news.php(17) : eval()'d code on line 1
Ich verstehe die Fehlermeldung nicht so wirklich. Wenn mir die schon jemand erklären könnte wäre ich schon froh und wenn mir jemand den Fehler komplett erklären könnte wäre ich noch froher.

Mit freundlichen Grüßen
K.haos
__________________
Die Informatik zwingt einen unlogisch logisch zu denken!

www.h-heimers.de
K.haos ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.02.2010, 09:29  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Na dann lass Dir den evaluierten Code doch einfach mal ausgeben. Kommt da gültiges PHP raus? Sicherlich nicht. Dazu ist da ein Backslash zu viel und ne ganze Ladung Content zu wenig drin. (Deine getTemplateUsw-Funktion gibt null zurück)

Ansonsten passt die Fehlermeldung schon mal definitiv nicht zum geposteten Code. Irgendwas enthälst Du uns also vor...

Nachtrag: Nur weil viele Leute auf diese Art Template-Engines schreiben, ist das noch kein Grund, es nachzumachen. Ich würd dringend anraten, das Konzept noch mal zu überdenken.

Gruß Jens
Jens Clasen ist offline  
Alt 27.02.2010, 10:25  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von dr. e.
Do never ever use eval!
Asipak ist offline  
Alt 27.02.2010, 14:26  
Neuer Benutzer
 
Registriert seit: 08.07.2009
Beiträge: 15
PHP-Kenntnisse:
Anfänger
K.haos befindet sich auf einem aufstrebenden Ast
K.haos eine Nachricht über ICQ schicken
Standard

Danke für eure Antworten werde mich noch mal dran setzen und überlegen.
Wäre nett wenn mir jemand ein tipp geben könnte wie eine gute alternative dazu aussieht.

Mit freundlichen Grüßen
K.haos
__________________
Die Informatik zwingt einen unlogisch logisch zu denken!

www.h-heimers.de
K.haos ist offline  
Alt 27.02.2010, 15:41  
Erfahrener Benutzer
 
Registriert seit: 04.12.2008
Beiträge: 132
agundur befindet sich auf einem aufstrebenden Ast
agundur eine Nachricht über Skype™ schicken
Standard

Zitat:
Wäre nett wenn mir jemand ein tipp geben könnte wie eine gute alternative dazu aussieht.
SKOR PHP Template : PHP TEMPLATE

gut dokumentiert ... und ganz ohne eval()


Gruß Agundur
__________________
AFFE ist nur im Dezimalsystem ein Palindrom.
agundur ist offline  
Alt 27.02.2010, 17:07  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Wäre nett wenn mir jemand ein tipp geben könnte wie eine gute alternative dazu aussieht.
Wozu?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 28.02.2010, 16:37  
Neuer Benutzer
 
Registriert seit: 08.07.2009
Beiträge: 15
PHP-Kenntnisse:
Anfänger
K.haos befindet sich auf einem aufstrebenden Ast
K.haos eine Nachricht über ICQ schicken
Standard

Danke für eure Antworten. Habe mir jetzt selber ganz ohne eval() eine kleine Template Engine mit OOP gemacht die auch wunderbar läuft.

Mit freundlichen Grüßen
K.haos
__________________
Die Informatik zwingt einen unlogisch logisch zu denken!

www.h-heimers.de
K.haos ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fehlerhafte Ausgabe bei PHP-Prjekt BlackNova PHP Tipps 2009 3 26.05.2009 10:46
[Erledigt] Navigation auf Smarty umstellen?! PHP-Fortgeschrittene 3 10.01.2006 09:19
Fehlerhafte MySQL Ausgabe mit SELECT c-bass Datenbanken 16 23.08.2005 14:49
Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22
[Erledigt] Fehlerhafte Ausgabe einer Abfrage Datenbanken 3 17.06.2004 12:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php eval funktioniert nicht, php eval alternative, php eval template, php eval html, php template eval, http://www.php.de/php-einsteiger/65146-fehlerhafte-ausgabe-mit-platzhaltern-duch-eval.html, php eval, oop eval() php, php eval xampp, php template eval (\\\$, php eval will nicht, alternative zu eval php, php template mit eval, whmcs eval funktioniert nicht, smarty function eval funktioniert nicht, platzerhalter php {}, template system eval php, eval für bestimmte platzhalter, eval php html template, alternative eval template ausgabe

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:27 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum