|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 5 ![]() |
Bonjour à tous,
une question de débutant : comment interpréter du code PHP contenu dans une String ? Pour utiliser du PHP en cascade on pense naturellement à utiliser la fonction include('fichier.php') qui permet l'inclusion de tout le code php contenu dans un fichier secondaire , par ex 'fichier.php'. Mais mon problème est autre : Je suis dans une page php qui appelle une chaine qui contient elle-même des commandes php, perdues au mileu de portions de code HTML ! Et je voudrais interpréter cette chaîne, avant de l'imprimer dans le browser. Car sans interprétation, j'obtiens après un echo($str) quelque chose qui ressemble à celà dans le code source de la page HTML du browser: '<p>blablablabla <?php ma_fonction_PHP(); ?> suite du blablabla</p>' Je voudrais bien entendu interpréter la partie <?php ma_fonction_PHP(); ?> avant de l'afficher dans le source de la page HTML par l'intermédiaire de echo. J'ai cherché du côté de la fonction eval(), mais si j'ai bien compris eval() ne permet que l'interprétation des variables et pas des fonctions. Il y a certainement un problème de méthodologie, ou la possibilité d'utiliser une fonction que je ne connais pas... Mais pour l'instant je fais du sur place. Quelqu'un peut il m'aider ? |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
d'après la doc tu dois pouvoir utiliser des classes, des namespaces y tuty quanti avec eval. regarde mieux les discutions.
Sinon écrire dans un fichier pourrait faire l'affaire. Je connais peu de cas ou tu va générer du code à la volée avec une vraie valeur ajoutée, parce que là tu vas vers de charmantes emmerdes point de vue programmation et sécurité. edit: essaie de faire sans: il y a déjà les inclusions de code, les fonctions, les classes, les namespaces, les fonctions anonymes, l'auto chargement de classes... et en plus tu as besoin d'exécuter du code mélangé à des données? Tu as regardé run_kit?
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
|
|
00
|
|
|
#3 | |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Citation:
|
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 5 ![]() |
merci, pour la réponse !
Effectivement, eval() traite la chaine comme une ligne de code. J'ai dit une bêtise en affirmant que eval() ne s'applique pas aux fonctions. Mais eval() ne semble pas me convenir : il me faudrait une fonction qui agisse à la manière d'include(fichier.php), mais qui traite une chaine de caractères à la place d'un fichier.php. Cette chaine comportant à la fois du code HTML et du code PHP. Pour être plus explicite, mon problème vient du fait que je stocke du code HTML dans une base MySQL, et récupère ce code pour l'afficher de manière dynamique avec echo(chaine HTML récupérée dans MySQL). Cela fonctionne très bien. Mais tout se complique quand je veux ajouter quelques bouts de code PHP dans ce code HTML stocké dans MySQL. Apache imprime alors le code php dans le source sous la forme <p>blablablabla <?php ma_fonction_PHP(); ?> suite du blablabla</p>' alors que j'aurais voulu que : 1) Apache imprime <p>blablablabla 2) puis qu'il éxécute <?php ma_fonction_PHP(); ?> 3) puis qu'il imprime suite du blablabla</p> Mais cette manière de penser est peut-être inappropriée . Est ce que j'ai tout faux ?
|
|
|
00
|
|
|
#5 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Techniquement ca serait possible : on pourrait extraire de la chaine le code php et le traiter avec eval ; mais bon ce que tu veux faire n'est a mon sens pas sérieux.
Ca serait déjà sale mais tu pourrais stocker la chaine sous la bonne forme : Code :
"echo '<p>blablablabla' ; ma_fonction_PHP(); echo 'suite du blablabla</p>';"
|
|
|
10
|
|
|
#6 | |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 5 ![]() |
Citation:
Alors que si le fichier 'blabla.php' contient le code suivant <p>blablablabla <?php ma_fonction_PHP(); ?> suite du blablabla</p>' alors, include('blabla.php') est bien plus propre, et cela fonctionne ! Seulement, le hic est que je ne dispose pas d'un fichier php 'blabla.php', mais d'une chaine qui contient la même chose que ce fichier blabla.php. Cette chaine étant issue d'une base MySQL. Y aurait-il un moyen de transformer cette chaine en une espèce de "fichier virtuel" pour pouvoir utiliser la fonction include ? ou alors il existe peut-être une équivalent de include qui s'applique à une chaine plutôt qu'à un fichier ?
|
|
|
|
00
|
|
|
#7 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
![]() ![]() ![]() Code :
__________________
http://blog.stealth35.com/ |
||
|
|
10
|
|
|
#8 |
|
Membre confirmé
![]() ![]() |
Tu pourrais peut-être générer un fichier sur le serveur, faire ton include puis le détruire.
|
|
|
10
|
|
|
#9 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
et sans fichier temporaire, mais avec allow_url_include sur On
Code :
__________________
http://blog.stealth35.com/ |
||
|
|
10
|
|
|
#10 | |||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 5 ![]() |
Citation:
Je n'aurais jamais trouvé tout seul. ![]() Je me permets encore une petite question : Est ce que cette méthode est souvent utilisée ? Est il courant d'inclure du code PHP issu d'une base de donnée ? Mais encore une fois Merci |
|||
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 817 ![]() |
Avec eval( ) :
Code :
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
||
|
|
10
|
|
|
#12 | |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 817 ![]() |
Citation:
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
|
10
|
|
|
#13 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
par contre pour le code dans la base, je te déconseille vivement de faire ca, inspire toi du style BBCode si tu veux faire quelque chose du genre. mais si tu veux vraiment faire ca utilise plutôt la méthode de Sèb
__________________
http://blog.stealth35.com/ |
|
|
|
10
|
|
|
#14 | |||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 5 ![]() |
Citation:
Je retiens celle de Seb, en attendant de trouver une autre solution à la création d'un site dynamique, que de stocker les pages html-php dans une base de données. Je m'étais inspiré pour cela du tutoriel suivant : http://pbnaigeon.developpez.com/tuto...ite-dynamique/ Code :
Merci à tous, pour votre aide et vos conseils ! |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com