Comment afficher les balises HTML en texte brut

211

J'ai un formulaire de saisie sur mon site Web où le HTML est autorisé et j'essaie d'ajouter des instructions sur l'utilisation des balises HTML. J'aimerais que le texte

<strong>Look just like this line - so then know how to type it</strong>

Mais jusqu'à présent, tout ce que je reçois est:

Ressemble à cette ligne - alors sache comment la taper

Comment puis-je afficher les tags pour que les gens sachent quoi taper?

user517593
la source

Réponses:

296

Remplacez <par &lt;et >par &gt;.

Darm
la source
6
Techniquement, il vous suffit de remplacer <par & lt; pour qu'il soit reconnu par la plupart des navigateurs, mais le> par & gt; est une bonne pratique
cwallenpoole
8
@Darm -1 pour ne pas avoir mentionné htmlspecialchars (). S'il y a une raison justifiée à cela, veuillez me corriger :)
Ronen Ness
7
Si le texte de la question devait être généré par PHP, htmlspecialchars () fait ce que cette réponse suggère: remplacer les signes inférieur et supérieur à (et autres) par leurs entités HTML . Mais la question ne précise pas, donc cette réponse plus générale est un sur-ensemble de toutes les réponses spécifiques à PHP. Et la question concerne vraiment le HTML.
gérer
Contrairement aux autres commentaires, cette réponse me fait gagner 100%, certaines des réponses que j'ai trouvées ici diraient simplement d'utiliser php et echo "<? // comme ceci?>"; mais cela n'a pas aidé du tout à ne pas montrer. D'un autre côté, cette réponse me fait gagner 17 caractères au total et @handle a un point donc voté.
ailia
235

En PHP, utilisez la fonction htmlspecialchars () pour échapper <et >.

htmlspecialchars('<strong>something</strong>')
acmé
la source
55

Comme beaucoup d'autres l'ont dit, htmlentities()fera l'affaire ... mais cela ressemblera à de la merde.

Enveloppez-le avec une <pre>étiquette et vous préserverez votre indentation.

echo '<pre>';
echo htmlspecialchars($YOUR_HTML);
echo '</pre>';
Jarrod
la source
36

Vous devez utiliser htmlspecialchars. Il remplace les caractères comme ci-dessous:

  • '&' (esperluette) devient &amp;
  • '"' (guillemet double) devient &quot;lorsque ENT_NOQUOTES n'est pas défini.
  • "'" (guillemet simple) &#039;ne devient que lorsque ENT_QUOTES est défini.
  • '<' (moins que) devient &lt;
  • '>' (supérieur à) devient &gt;
Luiz Damim
la source
13

vous pouvez utiliser htmlspecialchars ()

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>
Nikunj K.
la source
6

Il vous suffit de coder le <>s:

&lt;strong&gt;Look just like this line - so then know how to type it&lt;/strong&gt;
James Montagne
la source
5

Pour afficher les balises HTML dans un navigateur, entourez la sortie de balises <xmp> et </ xmp>

Paulo Henrique
la source
4
<xmp> est obsolète maintenant, plus que simplement obsolète. Ne l'utilisez pas.
Muhammad Abdul-Rahim
Une recherche rapide de Google sur le W3C révèle que XMP a été introduit pour afficher du texte préformaté en HTML 3.2 et versions antérieures. Lorsque le W3C a déconseillé la balise XMP, il a suggéré d'utiliser la balise PRE comme alternative préférée. Mise à jour: w3.org/TR/REC-html32#xmp , w3.org/MarkUp/html-spec/html-spec_5.html#SEC5.5.2.1 indicateur de suivi de modification de partage
kophygiddie
3

Vous pouvez utiliser htmlentities lors de l'écho vers le navigateur, cela affichera la balise plutôt que de faire interpréter html.

Voir ici http://uk3.php.net/manual/en/function.htmlentities.php

Exemple:

 echo htmlentities("<strong>Look just like this line - so then know how to type it</strong>"); 

Production:

<strong>Look just like this line - so then know how to type it</strong>
martynthewolf
la source
0

Il y a une autre façon ...

header('Content-Type: text/plain; charset=utf-8');

Cela rend la page entière servie en texte brut ... mieux vaut htmlspecialchars ...

J'espère que cela t'aides...

Alessandro
la source
0

L'approche JavaScript native -

('<strong>Look just like ...</strong>').replace(/</ig, '&lt;').replace(/>/ig, '&gt;');

Prendre plaisir!

simonbor
la source
1
JavaScript n'est pas tagué dans ce post.
isherwood
1
Je vous remercie. C'est utile pour moi.
Khang Dinh Hoang