2010-10-03 4 views
2

Je veux afficher la sortie de l'instruction PHP echo sur le navigateur. Le résultat est la sortie de htmlentities() fonction de PHP.Empêcher parcourir pour rendre le HTML lors de l'utilisation de la fonction htmlentities() en PHP

$str = "A 'quote' is <b>bold</b>"; 
// Expected Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt; 
echo "<textarea>".htmlentities($str)."</textarea>"; 
// Expected Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt; 
echo "<textarea>".htmlentities($str, ENT_QUOTES)."</textarea>"; 

Apparemment, il me donne

A 'quote' is <b>bold</b> dans mon <textarea>

S'il vous plaît conseiller.

Répondre

4

Double-échapper.

echo "<textarea>".htmlentities(htmlentities($str))."</textarea>"; 

Le but de htmlentities() est d'empêcher HTML en cours d'analyse en l'état. Mais vous voulez réellement afficher les entités HTML telles quelles, vous devez donc les ré-échapper à leur tour.

1

solution de BalusC fonctionnera, ou vous pouvez simplement écrire votre chaîne que vous souhaitez qu'il apparaisse et continuer à utiliser htmlentities une seule fois:

$str = "A 'quote' is &lt;b&gt;bold&lt;/b&gt;"; 

    echo "<textarea>".htmlentities($str)."</textarea>"; 

    // Expected Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt; 
    // Actual Output : A 'quote' is &lt;b&gt;bold&lt;/b&gt; 
Questions connexes