Подтвердить что ты не робот

Что мне нужно, чтобы сбежать внутри html <pre class="prettyprint-override"> tag

Я использую тег <pre> в своем блоге для отправки кода. Я знаю, что мне нужно изменить < на &lt; и > на &gt;. Нужны ли какие-либо другие символы для выполнения правильного html?

4b9b3361

Ответ 1

Что произойдет, если вы используете тег <pre> для отображения разметки HTML в своем блоге:

<pre>Use a <span style="background: yellow;">span tag with style attribute</span> to hightlight words</pre>

Это приведет к проверке HTML, но приведет ли он к ожидаемому результату? Нет. Правильный способ:

<pre>Use a &lt;span style=&quot;background: yellow;&quot;&gt;span tag with style attribute&lt;/span&gt; to hightlight words</pre>

Другой пример: если вы используете pre-tag для отображения кода другого языка, требуется еще HTML-кодирование:

<pre>if (i && j) return;</pre>

Это может привести к ожидаемому результату, но может ли он пройти проверку HTML? Нет. Правильный способ:

<pre>if (i &amp;&amp; j) return;</pre>

Короче говоря, HTML-кодирование содержимого предварительного тега так же, как и с другими тегами.

Ответ 2

"Только для вас" - версия HTML "fosile": с помощью тега <xmp>

Это неизвестно, но он действительно существует и даже хром все еще поддерживает его, однако использование пары <xmp> тега НЕ рекомендуется, на которое можно положиться - это только для вас, но его очень простой способ сделать свой личный, например. DOCS. даже w3.org WIKI говорит в примере "Нет, действительно, не используйте его".

Вы можете поместить ЛЮБОЙ html (исключая тег </xmp> end) внутри <xmp></xmp>

<xmp>
<html> <br> just any other html tags...
</xmp>

Правильная версия

Надлежащей версией можно считать HTML, хранящимся как STRING, и отображаться с помощью некоторой функции экранирования. Просто помните одно: строки в C-подобных языках обычно записываются между одинарными кавычками или двойными кавычками - если вы завершаете свою строку в double = > , вы должны избегать удвоений (вероятно, с \), если вы завернете string в single = > escape одиночных (возможно, с \)...

Самый распространенный способ - экранирование на стороне сервера (например, в PHP)

Языки сценариев на стороне сервера часто имеют встроенную функцию для выхода из HTML.

<?php
   $html = "<html> <br> or just any other HTML"; //store html
   echo htmlspecialchars($html); //display escaped html
?>

Клиентский путь (пример в JavaScript и jQuery)

Подобный подход, как на стороне сервера, возможен в клиентских сценариях, JavaScript, из того, что я знаю, не имеет встроенной функции для этого (это вполне логично), но если вы используете некоторую фреймворк/библиотеку, например jQuery, то есть функции, которые можно использовать таким образом.
Просто помните то же самое, что и для серверных - на языках C-типа, избегайте кавычек, которые вы завернули в свою строку...

var html = '<html> <br> or just any other HTML';
var $elementToInsertEscapedHTMLto = jQuery("XXX"); //XXX is selector, e.g. CSS selector
$elementToInsertEscapedHTMLto.text( html ); 

Ответ 3

Для публикации кода в вашей разметке я предлагаю использовать тег <code> . Он работает так же, как и pre, но будет считаться семантически правильным.

В противном случае <code> и <pre> нужны только закодированные угловые скобки.

Ответ 4

Используйте это и не беспокойтесь ни о каком из них.

<pre>
${fn:escapeXml('
  <!-- all your code -->
')};
</pre>

Вам нужно будет включить jQuery для работы.

Ответ 5

< и > являются единственными символами, которые должны быть экранированы. Все остальные разрешены.

Ответ 6

Используя pre-тег, вам нечего скрывать.