Я использую тег <pre>
в своем блоге для отправки кода. Я знаю, что мне нужно изменить <
на <
и >
на >
. Нужны ли какие-либо другие символы для выполнения правильного html?
Что мне нужно, чтобы сбежать внутри html <pre class="prettyprint-override"> tag
Ответ 1
Что произойдет, если вы используете тег <pre>
для отображения разметки HTML в своем блоге:
<pre>Use a <span style="background: yellow;">span tag with style attribute</span> to hightlight words</pre>
Это приведет к проверке HTML, но приведет ли он к ожидаемому результату? Нет. Правильный способ:
<pre>Use a <span style="background: yellow;">span tag with style attribute</span> to hightlight words</pre>
Другой пример: если вы используете pre-tag для отображения кода другого языка, требуется еще HTML-кодирование:
<pre>if (i && j) return;</pre>
Это может привести к ожидаемому результату, но может ли он пройти проверку HTML? Нет. Правильный способ:
<pre>if (i && 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-тег, вам нечего скрывать.