13 votes

Mettre du code PHP dans une chaîne de caractères

Comment mettre du code PHP dans une chaîne de caractères ?

$phpCode = '<? if($condtion){ ?>';

Pour une raison inconnue, lorsque je fais cela et que j'affiche le code, je n'obtiens pas la balise PHP d'ouverture, <? .

Ai-je oublié quelque chose ? Existe-t-il une meilleure façon de procéder ? Je suis actuellement en train de regarder le Documentation PHP sur les chaînes de caractères mais j'aimerais avoir votre avis.

Editer : La raison pour laquelle j'utilise des apsotrophes ( ' ) et non des guillemets ( " ), c'est parce que je ne veux pas que le code remplisse la valeur de la condition. Je veux qu'il renvoie l'information telle quelle.

0voto

watcher Points 10271

Il y a déjà eu quelques réponses à cette question, mais j'aimerais ajouter mon grain de sel...

Ce code :

<?php
    $test = '<?php echo "hello world!"; ?>';
    echo $test;
?>

Produit un écran blanc dans le navigateur, mais si vous regardez la source, vous verrez cette sortie :

<?php echo "hello world!"; ?>

Cela est lié à la manière dont le navigateur rend votre code PHP. Les navigateurs ne sont pas conçus pour afficher du code PHP, mais plutôt des balises HTML. Si vous affichez le code en écho parce que vous testez ce qui va être écrit dans votre fichier, regardez la source pour vous assurer que ce qui est affiché correspond bien à ce que vous voulez écrire dans le fichier. Vous ne le verrez pas dans le navigateur lui-même parce qu'il ne sait pas comment restituer la balise ?php sans parler de ce qu'il faut faire avec la balise echo attribut.

En option, comme tout le monde l'a déjà dit, vous pouvez faire passer la chaîne par htmlspecialchars si tout ce que vous voulez, c'est le rendre dans le navigateur sans avoir à afficher la source. Vous ne voudriez pas faire cela si vous l'écrivez dans le fichier, mais cela peut vous aider à déboguer votre sortie.

Une autre option serait d'exécuter votre script à partir de la ligne de commande. Il n'essaiera pas de rendre votre résultat et se contentera de le recracher mot pour mot.

-1voto

S.Visser Points 2165

Eval php documentation

Utilisation Eval() si vous souhaitez exécuter le code contenu dans la chaîne.

Exemple

$str = "Hello ";
eval('$str .= "World"');

echo $str;
/* Output: Hello World */

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X