IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

interpréter du code php dans un echo


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 151
    Points : 116
    Points
    116
    Par défaut interpréter du code php dans un echo
    Bonjour à tous,

    J'ai une variable $contenu qui contient du code html. J'aimerais pouvoir intégrer du code php dans cette variable en remplaçant certaines chaînes et que ce code soit ensuite interprété quand j'affiche la chaîne, mais je ne trouve pas de moyen pour faire cela.

    En simplifiant mon code, voilà ce que ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $trans = array(":" => "");
    $inc = strtr($var[$i],$trans);
    $inc = "<?php include('includes/" . $inc . ".php') ?>";
    $contenu = str_replace($var[$i],$inc,$contenu);
     
    echo $contenu;
    J'obtiens comme résultat l'affichage de <?php include('includes/truc.php') ?> qui n'apparait que dans le code de la page en commentaire. Comment faire pour que ce code soit interprété ?

    Merci d'avance

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    tu peux utiliser la fonction eval (à tes risques et périls) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $contenu = "include('includes/truc.php') ?>";
    eval($contenu);
    Attention, eval commence toujours par mettre un "<?php" quand il interprête ce que tu lui passes en paramètre. J'ai donc volontairement enlevé le "<?php" devant "include".

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 151
    Points : 116
    Points
    116
    Par défaut
    Salut, et merci pour ton aide.

    Mon problème ici est que j'ai dans cette variable $contenu à la fois du simple code html qui doit donc être affichés via un echo, et quelques bouts de code php (les include) que je dois exécuter...

    J'ai néanmoins fait des tests et voilà à quoi j'arrive (je mets tout le code cette fois):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (preg_match_all("#:{3}[a-z]+:{3}#",$contenu,$matches)!=0){
    $i = 0;
    foreach ($matches as $var){
    foreach ($var as $test){
    $trans = array(":" => "");
    $inc = strtr($var[$i],$trans);
    $inc = "include('includes/" . $inc . ".php');";
    $contenu = str_replace($var[$i],eval($inc),$contenu);
    $i++;
    }
    }
    }
     echo $contenu ; ?>
    Je mets l'eval juste sur la variable qui contient l'include mais évidemment il me l'exécute avant de passer à l'echo et j'ai donc mes includes puis le reste du contenu alors qu'il doivent rester en place à l'intérieur du contenu...

    Mon résultat avec le code ci-dessus :

    include 1
    include n

    blablabla
    blablabla
    blablabla
    Ce que je veux obtenir :

    blablabla
    include 1
    blablabla
    include n
    blablabla

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Pourquoi ne pas faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    if (preg_match_all("#:{3}[a-z]+:{3}#",$contenu,$matches)!=0){
    $i = 0;
    foreach ($matches as $var){
    foreach ($var as $test){
    $trans = array(":" => "");
    $inc = strtr($var[$i],$trans);
    $contenu = str_replace($var[$i],"include('includes/" . $inc . ".php');",$contenu);
    $i++;
    }
    }
    }
     eval($contenu); ?>
    Aussi, si tu veux avoir du HTML avant le PHP avec la fonction eval, comme je l'ai dit dans un de mes messages précédents, il faut sortir de l'execution de PHP en préfixant le paramètre de eval par : "?>".

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $php = '<br/><?php include("dossier/page.php"); ?>';
    eval('?>'.$php);

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 151
    Points : 116
    Points
    116
    Par défaut
    Ca ne marche pas, j'avais déjà essayé une solution de cegenre (et je viens de réessayer) mais le eval($contenu) se plante car il n'y a pas que le code php mais aussi le simple html.

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Oui...

    la réponse est dans mon message précédent : il faut préfixer le paramètre d'eval par "?>".

    Cf :
    Pour mélanger des sorties HTML et du code PHP, vous pouvez utiliser une balise de fermeture de PHP pour quitter le mode PHP.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 151
    Points : 116
    Points
    116
    Par défaut
    Merci, ça fonctionne !

    Effectivement il suffisait de laisser les ouvertures et fermetures php autour des includes et de commencer par fermer le php dans l'eval.

    Ce que ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (preg_match_all("#:{3}[a-z]+:{3}#",$contenu,$matches)!=0){
    $i = 0;
    foreach ($matches as $var){
    foreach ($var as $test){
    $trans = array(":" => "");
    $inc = strtr($var[$i],$trans);
    $inc = "<?php include('includes/" . $inc . ".php'); ?>";
    $contenu = str_replace($var[$i],$inc,$contenu);
    $i++;
    }
    }
    }
     eval ("?>" . $contenu) ;
    Encore merci pour ton aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/06/2009, 15h31
  2. du code php dans un echo
    Par ledisciple dans le forum Langage
    Réponses: 2
    Dernier message: 04/04/2009, 15h56
  3. Interprétation du code php dans un fichier htm
    Par syl2095 dans le forum Apache
    Réponses: 3
    Dernier message: 30/08/2008, 18h31
  4. Réponses: 4
    Dernier message: 18/02/2007, 20h28
  5. [Tableaux] Code PHP dans un echo
    Par flOZ dans le forum Langage
    Réponses: 7
    Dernier message: 24/05/2006, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo