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?

Réponses:


296

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


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


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>';

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;

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;
?>

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;

5

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


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>


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...


0

L'approche JavaScript native -

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

Prendre plaisir!


1
JavaScript n'est pas tagué dans ce post.
isherwood

1
Je vous remercie. C'est utile pour moi.
Khang Dinh Hoang
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.