Mostrar o código HTML no HTML

existe uma forma de mostrar excertos de código HTML numa página Web sem necessidade de substituir cada < por &lt; e > por &gt;?

por outras palavras, existe alguma marca para não renderizar HTML até que você carregue na marca de Fecho?

 149
Author: Steven, 2010-05-12

23 answers

Em HTML, não há como escapar dos personagens. No entanto, em devidamente declarado XHTML (que é XML, e precisa de ser declarado ao navegador como tal; em particular, não é suficiente apenas colocar um DOCTYPE), pode usar uma secção CDATA:

<![CDATA[Your <code> here]]>

Mas isto só funciona em XML, não em HTML.

No HTML, a única solução garantida para funcionar em todo o lado é escapar do código (< e & como &lt; e &amp;, respectivamente) manualmente.

 58
Author: Konrad Rudolph, 2015-11-11 09:21:59

O método tentado e verdadeiro para HTML:

  1. substituir o carácter & por &amp;
  2. substituir o carácter < por &lt;
  3. substituir o carácter > por &gt;
  4. Opcionalmente rodeie a sua amostra de HTML com <pre> e/ou <code> etiquetas.
 134
Author: Dolph, 2010-05-12 15:58:55

A melhor maneira:

<xmp>
// your codes ..
</xmp>

Amostras antigas:

Amostra 1:

<pre>
  This text has
  been formatted using
  the HTML pre tag. The brower should
  display all white space
  as it was entered.
</pre>

Amostra 2:

<pre>
  <code>
    My pre-formatted code
    here.
  </code>
</pre>

Amostra 3 : (Se você estiver realmente "citando" um bloco de código, então a marcação seria)

<blockquote>
  <pre>
    <code>
        My pre-formatted "quoted" code here.
    </code>
  </pre>
</blockquote>

Boa amostra CSS:

pre{
  font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;
  margin-bottom: 10px;
  overflow: auto;
  width: auto;
  padding: 5px;
  background-color: #eee;
  width: 650px!ie7;
  padding-bottom: 20px!ie7;
  max-height: 600px;
}

Código de realce de sintaxe (para trabalho pro):

Arco-íris (muito Perfeito)

Pretify

Syntaxhighlighter

Realçar

JSHighlighter


Melhores ligações para tu.:

Http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-how-to-add-syntax-highlighting-to-any-project/

Https://github.com/balupton/jquery-syntaxhighlighter

Http://bavotasan.com/2009/how-to-wrap-text-within-the-pre-tag-using-css/

Http://alexgorbatchev.com/SyntaxHighlighter/

Https://code.google.com/p/jquery-chili-js/

Como realçar o código-fonte em HTML?

 117
Author: Erfan Safarpoor, 2017-05-23 12:18:23

O tipo de método ingênuo para mostrar o código será incluí-lo em um textarea e adicionar atributo desativado para que não seja editável.

<textarea disabled> code </textarea>
Espero que ajude alguém à procura de uma maneira fácil de fazer as coisas..
 33
Author: Krunal, 2017-06-16 20:12:41

Obsoleto , mas funciona em FF3 e IE8.

<xmp>
   <b>bold</b><ul><li>list item</li></ul>
</xmp>

Recomendado:

<pre><code>
    code here, escape it yourself.
</code></pre>
 24
Author: s_hewitt, 2014-03-04 12:47:23

Eu usei {[[0]} assim mesmo : http://jsfiddle.net/barnameha/hF985/1/

 14
Author: barnameha, 2013-11-11 10:57:02

Em HTML? Não.

Em XML/XHTML? Dava-te jeito um bloco.

 7
Author: cletus, 2010-05-12 15:50:27

A marca obsoleta {[[2]} faz essencialmente isso, mas já não faz parte do espectrómetro de XHTML. Ainda deve funcionar em todos os navegadores atuais.

Aqui está outra ideia, um truque de hack/parlor, você poderia colocar o código em um textarea assim:
<textarea disabled="true" style="border: none;background-color:white;">
    <p>test</p>
</textarea>

Colocar parêntesis de ângulo e código como este dentro de uma área de texto é HTML inválido e irá causar um comportamento indefinido em diferentes navegadores. No Internet Explorer o HTML é interpretado, enquanto Mozilla, Chrome e Safari o deixam desinterpretado.

Se quiser que não seja editável e que tenha um aspecto diferente, pode facilmente estilá-lo usando o CSS. A única questão seria que os navegadores irão adicionar essa pequena pega de arrasto no canto inferior direito para redimensionar a caixa. Ou alternativamente, tente usar uma tag de entrada em vez disso.

A forma correcta de injectar o código no seu textarea é usar a linguagem do lado do servidor como este PHP, por exemplo:

<textarea disabled="true" style="border: none;background-color:white;">
    <?php echo '<p>test</p>'; ?>
</textarea>
Depois, contorna o interpretador de html e coloca texto desinterpretado em o textarea consistentemente em todos os navegadores.

Além disso, a única maneira é realmente escapar do código você mesmo se HTML estático ou usando métodos do lado do servidor, como o HtmlEncode() do.NET se usar tal tecnologia.

 5
Author: GShenanigan, 2014-04-11 01:30:55
É muito simples .... Use este código XMP
    <xmp id="container">

&lt;xmp &gt;

    <p>a paragraph</p>

    &lt;/xmp &gt;

</xmp>
 4
Author: Kamlesh, 2014-08-23 11:12:18

Seguir a ligação será útil.

Http://www.freebits.co.uk/convert-html-code-to-text.html

É muito fácil e amigável.
 4
Author: Praful Rajput, 2016-07-19 13:23:31

Em última análise, a melhor resposta (embora irritante) é "escapar do texto".

No entanto, existem muitos editores de texto -- ou mesmo mini utilitários autônomos -- que podem fazer isso automaticamente. Então você nunca deve ter que escapar manualmente se você não quiser (a menos que seja uma mistura de código escapado e não-escapado...)

Uma pesquisa rápida no Google mostra-me esta, por exemplo: http://malektips.com/zzee-text-utility-html-escape-regular-expression.html

 3
Author: Stephen R, 2010-05-12 16:19:28

Assumo:

  • quer escrever HTML5 100% válido
  • Você quer colocar o excerto de código (quase) literal no HTML
    • especialmente < não deve ser necessário escapar

Todas as tuas opções estão nesta árvore:

  • com sintaxe HTML
      Há cinco tipos de elementos.
    • aqueles chamados " elementos normais "(como <p>)
        Não posso ter um literal.
    • seria considerado o início da próxima etiqueta ou comentário
  • elementos vazios
    • eles não têm conteúdo
    • Você poderia colocar o seu HTML num atributo de dados (mas isto é verdadeiro para todos os elementos)
    • isso precisaria de JavaScript para mover os dados para outro lugar
    • em atributos duplamente citados, " e &thing; precisam de escapar: &quot; e &amp;thing; respectivamente
  • elementos de texto Em Bruto
    • <script> e <style> apenas
    • Nunca são renderizados. visível
  • mas incorporar o teu texto em Javascript pode ser viável
  • o Javascript permite cadeias de caracteres multi-linhas com backticks
  • poderia então ser inserido dinamicamente
  • um literal </script não é permitido em lado Nenhum em <script>
  • elementos de texto Em Bruto escapáveis
    • <textarea> e <title> apenas
    • <textarea> é um bom candidato para embrulhar o código em
    • É totalmente legal escrever ali.
    • não é legal o substring </textarea por razões óbvias
      • escapar deste caso especial com &lt;/textarea ou similar
    • &thing; precisa de escapar: &amp;thing;
  • elementos estranhos
    • Elementos dos espaços de nomes MathML e SVG
    • pelo menos o SVG permite a incorporação do HTML de novo...
    • e CDATA é permitido lá, por isso parece ter potencial
  • com sintaxe XML
  •  

    Nota: > nunca precisa de escapar. Nem mesmo em elementos normais.
     3
    Author: Robert Siemer, 2017-05-23 12:10:43

    Pode usar uma linguagem do lado do servidor como o PHP para inserir texto em bruto:

    <?php
      $str = <<<EOD
      <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta name="description" content="Minimal HTML5">
        <meta name="keywords" content="HTML5,Minimal">
        <title>This is the title</title>
        <link rel='stylesheet.css' href='style.css'>
      </head>
      <body>
      </body>
      </html>
      EOD;
    ?>
    

    Depois descarrega o valor de $str htmlencoded:

    <div style="white-space: pre">
      <?php echo htmlentities($str); ?>
    </div>
    
     2
    Author: kta, 2014-04-11 01:37:55

    Há algumas maneiras deescapar de tudo {[[4]} em HTML, nenhuma delas é bonita.

    Ou pode colocar um {[[0]} que carrega um ficheiro de texto antigo.

     1
    Author: BCS, 2017-05-23 12:10:43
    Este é de longe o melhor método para a maioria das situações.
    <pre><code>
        code here, escape it yourself.
    </code></pre>
    
    Eu teria votado na primeira pessoa que o sugeriu, mas não tenho reputação. No entanto, senti-me obrigado a dizer algo para bem das pessoas que tentam encontrar respostas na Internet.
     1
    Author: xdaxdb, 2013-10-24 05:11:08
    Foi assim que fiz.
    $str = file_get_contents("my-code-file.php");
    echo "<textarea disabled='true' style='border: none;background-color:white;'>";
    echo $str;
    echo "</textarea>";
    
     1
    Author: techiegirl, 2014-03-15 14:47:28
    function escapeHTML(string)
        { 
            var pre = document.createElement('pre');
            var text = document.createTextNode(string);
            pre.appendChild(text);
            return pre.innerHTML;
    }//end escapeHTML
    

    Ele vai devolver o Html escapado

     1
    Author: Govind Singh, 2014-07-08 11:51:15

    Se o seu objectivo é mostrar um pedaço de código que está a executar noutro sítio da mesma página, poderá usar o textContent (é puro-js e bem suportado: http://caniuse.com/#feat=textcontent)

    <div id="myCode">
        <p>
            hello world
        </p>
    </div>
    
    <div id="loadHere"></div>
    
    
    document.getElementById("myCode").textContent = document.getElementById("loadHere").innerHTML;
    

    Para obter a formatação multi-linhas no resultado, você precisa definir o estilo css " white-space: pre;" no div alvo, e escrever as linhas individualmente usando "\r\n" no final de cada.

    Aqui está uma demo. https://jsfiddle.net/wphps3od/

    Este método tem uma vantagem sobre a utilização de textarea: o código não será reformatado como seria em um textarea. (Coisas como &nbsp; são removidas inteiramente em um textarea)

     1
    Author: Timothy Kanski, 2017-01-12 16:19:03
    <textarea ><?php echo htmlentities($page_html); ?></textarea>
    
    Por mim, tudo bem..

    "tendo em mente Alexander's sugestão, eis porque penso que esta é uma boa abordagem"

    Se tentarmos simplesmente <textarea> pode nem sempre funcionar, uma vez que pode haver marcas de fecho textarea que podem fechar erradamente a marca-mãe e mostrar o resto da fonte HTML no documento-mãe, o que pareceria estranho.

    Usando htmlentities converte todos os caracteres aplicáveis, tais como < > para entidades HTML, o que elimina qualquer possibilidade de fuga.

    Talvez haja benefícios ou falhas nesta abordagem ou uma maneira melhor de alcançar os mesmos resultados, se assim for, por favor, comente como eu gostaria de aprender com eles:)

     1
    Author: Anupam, 2018-01-11 01:11:40

    Pode não funcionar em todas as situações, mas colocar excertos de código dentro de um textarea irá mostrá-los como código.

    Você pode estilar o textarea com CSS Se você não quiser que ele se pareça com um textarea real.

     0
    Author: Drew Thomas, 2014-10-23 20:00:41

    Podias tentar:

    Hello! Here is some code:
    
    <xmp>
    <div id="hello">
    
    </div>
    </xmp>
     0
    Author: Brendan, 2018-06-16 16:11:03
     //To show xml tags in table columns you will have to encode the tags first
    
    function htmlEncode(value) {
        //create a in-memory div, set it's inner text(which jQuery automatically encodes)
        //then grab the encoded contents back out.  The div never exists on the page.
        return $('<div/>').text(value).html();
    }
    
    html = htmlEncode(html)
    
     -1
    Author: Preetika, 2015-01-06 09:56:27

    Ao embrulhar o seu código num contenteditable div e ao definir a indentação white-space: pre-wrap; é preservada, os dados de código de acordo com a largura e a altura são auto-regulados:

    <div class="code" contenteditable>
      // code
    </div>
    
    
    .code {
      white-space: pre-wrap;
    }
    
     -2
    Author: inBlackAndWhite, 2018-02-06 16:22:46