2009-08-28 9 views
0

J'ai 1 fichier-modèle, qui est inclus dans le fichier principal.Exécution de php à partir d'un autre fichier

some.template:

... 
<?php echo '!'; ?> 
... 

dans le fichier principal i lire le fichier dans 1 variable et l'afficher. Bien sûr, le script php ne fonctionne pas ici. Comment puis-je faire ça, ce que je veux?

Merci

+0

Quelles sont les modifications à apporter? Montrez-les pour nous, et il peut y avoir un moyen d'écrire un modèle que vous n'avez pas à modifier et à évaluer (ce qui est extrêmement peu sûr). –

Répondre

4

Vous pouvez utiliser include à lire et à traiter le fichier. Si vous avez besoin de post-processus, le résultat (je suppose que cela pourrait être la raison pour vous de lire le modèle dans une variable) essayer output buffering:

ob_start(); 
include 'some.template'; 
$out = ob_get_clean(); 
echo $out; 

Si vous devez modifier le modèle avant avoir procédé PHP vous devrez utiliser eval. Mais je vous conseille d'être très prudent avec cela pour des raisons de sécurité évidentes et des raisons de performance peut-être pas si évidentes. Si vous avez juste besoin de certaines variables à remplacer, vous devriez envisager d'utiliser un moteur de template à la place ou des moyens simples comme preg_replace.

0

Ne pas lire le fichier dans la variable, au lieu faire

include 'some.template'; 
+0

Je dois modifier le modèle avant de l'insérer. inclure est mauvais. – Ockonal

+1

Réécriture du code PHP dans le template? Vous devriez vraiment repenser votre conception. Si vous pouviez donner plus de détails sur ce que vous voulez accomplir, quelqu'un peut peut-être vous offrir une meilleure solution. –

0

Depuis que vous souhaitez modifier le script avant de l'utiliser, la seule façon de le faire est d'utiliser practially:

eval($string); 

Je suis sûr que je ne ai pas besoin de vous dire de ne pas le faire avec entrée de l'utilisateur si vous appréciez la sécurité du tout.

+0

Je suis sûr que vous avez besoin de lui dire que ce n'est pas sûr, trop de gens sont de mauvais programmeurs pour assumer le contraire avec une question comme celle-ci. –

Questions connexes