Como exibir tags HTML como texto sem formatação

211

Tenho um formulário de entrada no meu site em que o HTML é permitido e estou tentando adicionar instruções sobre o uso de tags HTML. Eu gostaria que o texto

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

Mas até agora tudo o que recebo é:

Parecido com esta linha - então saiba como digitá-la

Como posso mostrar as tags para que as pessoas saibam o que digitar?

user517593
fonte

Respostas:

296

Substitua <por &lt;e >com &gt;.

Darm
fonte
6
Tecnicamente, você só precisa substituir <por & lt; para que seja reconhecido pela maioria dos navegadores, mas o> by & gt; é uma boa prática
cwallenpoole
8
@Darm -1 por não mencionar htmlspecialchars (). Se há uma razão justificada para que me correta, por favor :)
Ronen Ness
7
Se o texto da pergunta fosse gerado pelo PHP, htmlspecialchars () faz o que esta resposta sugere: substitua os sinais menor que e maior que (e outros) por suas entidades HTML . Mas a pergunta não especifica, portanto, essa resposta mais geral é um superconjunto de todas as respostas específicas do PHP. E a questão é realmente sobre HTML.
manipula
Ao contrário dos outros comentários, essa resposta me salva 100%, algumas das respostas que encontrei aqui dizem apenas usar php e echo "<? // like this?>"; mas isso não ajudou em nada, ainda não está aparecendo. Por outro lado, esta resposta me salva 17 caracteres no total, mais @handle tem um ponto que foi votado.
ailia 15/01
235

No PHP, use a função htmlspecialchars () para escapar <e >.

htmlspecialchars('<strong>something</strong>')
acme
fonte
55

Como muitos outros disseram, htmlentities()fará o truque ... mas parecerá uma merda.

Embrulhe com uma <pre>etiqueta e você preservará seu recuo.

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

Você deveria usar htmlspecialchars. Ele substitui os caracteres como abaixo:

  • '&' (e comercial) torna-se &amp;
  • '"' (aspas duplas) se torna &quot;quando ENT_NOQUOTES não está definido.
  • "'" (aspas simples) se torna &#039;apenas quando ENT_QUOTES está definido.
  • '<' (menor que) se torna &lt;
  • '>' (maior que) se torna &gt;
Luiz Damim
fonte
13

você pode usar 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.
fonte
6

Você só precisa codificar os <>:

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

Para exibir tags HTML em um navegador, coloque a saída entre as tags <xmp> e </ xmp>

Paulo Henrique
fonte
4
<xmp> está obsoleto agora, mais do que obsoleto. Não use.
Muhammad Abdul-Rahim
Uma rápida pesquisa no Google no W3C revela que o XMP foi introduzido para exibir texto pré-formatado no HTML 3.2 e versões anteriores. Quando o W3C reprovou a marca XMP, sugeriu o uso da marca PRE como alternativa preferida. Atualização: w3.org/TR/REC-html32#xmp , w3.org/MarkUp/html-spec/html-spec_5.html#SEC5.5.2.1 compartilhamento de edição seguir bandeira
kophygiddie
3

Você pode usar htmlentities ao ecoar no navegador; isso mostrará a tag em vez de ser interpretada por html.

Veja aqui http://uk3.php.net/manual/en/function.htmlentities.php

Exemplo:

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

Resultado:

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

Use htmlentities () para converter caracteres que, de outra forma, seriam exibidos como HTML.

Reuben
fonte
0

Existe outra maneira ...

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

Isso torna a página inteira servida como texto simples ... melhor é htmlspecialchars ...

Espero que isto ajude...

Alessandro
fonte
0

A abordagem nativa do JavaScript -

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

Aproveitar!

simonbor
fonte
1
JavaScript não está marcado nesta postagem.
isherwood 23/01
1
Obrigado. É útil para mim.
Khang Dinh Hoang