2009-11-11 1 views
1

Cela peut être un peu inhabituel, mais j'ai besoin d'écho <?php. Cependant, je pense que PHP le traite comme un vrai <?php et commence à exécuter du code au lieu de le traiter comme une chaîne. Comment puis-je échapper <?php et ?> afin qu'ils puissent être traités comme des chaînes? Il n'y avait rien dans le manuel à ce sujet.Ai-je besoin d'échapper à cela?

Merci, je sais que c'est un peu inhabituel.

Répondre

1

Vous pouvez utiliser les &lt; et &gt; entités html (pour remplacer '<' et '>'). Ceux-ci ne sont manipulés que dans le navigateur, donc PHP ne tentera pas d'exécuter ce code.

+0

Est-ce que cela fonctionnera si je veux écrire dans un fichier? – Cyclone

+0

Besoin de plus d'informations. Je ne vois pas pourquoi pas. –

+0

Je tente de générer dynamiquement un fichier php, et il doit être capable de l'écrire. Quand je l'ai essayé, ça ne fonctionnait pas du tout ... – Cyclone

0

Si elles sont renvoyées dans une chaîne, elles ne seront pas exécutées.

+0

Ils ne seront pas affichés à l'écran (certainement pas sur ma machine Ubuntu9.10, Apache2.2.12, php5.2) en utilisant 'echo" ";' –

+0

@ricebowl Cela semble être mon problème, je ne suis pas voir quoi que ce soit – Cyclone

+1

Nah. Le code doit être exécuté ou visible dans le code source. Êtes-vous sûr que ce n'est ni l'un ni l'autre? –

2

simplement utiliser la fonction htmlentities

+0

Comment faire? – Cyclone

+1

'echo htmlentities ("

1

En HTML,

&lt;?php 

Ou en PHP:

echo htmlentities('<?php'); 
1

Si ceci est votre code:

<?php 
    echo '<?php'; 
?> 

et que vous exécutez que comme une page Web, vous ne verrez rien. Mais pas parce que PHP ne fait pas écho à votre chaîne <?php, mais parce que le navigateur voit < et pense que c'est le début d'une balise, et les balises ne sont pas affichées. C'est évidemment une erreur, mais c'est ce que fait le navigateur.

Pour contourner ce problème, échapper à la partie <, utilisez htmlentities():

<?php 
    echo htmlentities('<?php'); 
?> 

qui quand il est fait l'écho, se traduira par la source HTML de:

&lt;php 

qui, lorsqu'il est affiché dans le navigateur montre:

<? php

0
echo '<?php ?>'; // prints <?php ?> 
echo "<?php ?>"; // prints <?php ?> 

Non, vous n'avez rien de spécial à faire.

Questions connexes