Как отобразить HTML-теги в виде простого текста


211

У меня есть форма ввода на моем сайте, где разрешен HTML, и я пытаюсь добавить инструкции по использованию тегов HTML. Я хотел бы, чтобы текст

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

Но пока все, что я получаю, это:

Выглядит так же, как эта строка - так что тогда знайте, как ее напечатать

Как я могу показать теги, чтобы люди знали, что печатать?

Ответы:


296

Заменить <на &lt;и >с &gt;.


6
Технически вам нужно только заменить <на & lt; для распознавания большинством браузеров, но> by & gt; хорошая практика
cwallenpoole

8
@ Дарм -1 за то, что не упомянул htmlspecialchars (). Если есть веская причина для этого, пожалуйста, поправьте меня :)
Ронен Несс

7
Если текст вопроса должен был быть сгенерирован PHP, htmlspecialchars () делает то, что предлагает этот ответ: заменяет знаки « меньше» и «больше» (и другие) на их HTML-сущности . Но этот вопрос не уточняет, так что этот более общий ответ является расширенным набором всех специфичных для PHP ответов. И вопрос действительно о HTML.
обрабатывать

В отличие от других комментариев, этот ответ экономит мне 100%, некоторые из ответов, которые я нашел здесь, сказали бы просто использовать php и echo "<? // like this?>"; но это не помогло, все еще не показывая. С другой стороны, этот ответ экономит мне 17 символов, плюс у @handle есть точка, за которую проголосовали.
Айлия


55

Как говорили многие другие, htmlentities() добьются цели ... но это будет выглядеть как дерьмо.

Оберните его <pre>тегом, и вы сохраните отступы.

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

36

Вы должны использовать htmlspecialchars. Он заменяет символы, как показано ниже:

  • '&' (амперсанд) становится &amp;
  • '"' (двойная кавычка) становится &quot; когда ENT_NOQUOTES не установлен.
  • "'" (одинарная кавычка) становится &#039; только тогда, когда установлен ENT_QUOTES.
  • «<» (меньше чем) становится &lt;
  • '>' (больше чем) становится &gt;

13

Вы можете использовать htmlspecialchars ()

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>


5

Чтобы отобразить теги HTML в браузере, окружите вывод тегами <xmp> и </ xmp>


4
<xmp> устарел сейчас, больше, чем просто устарел. Не используйте это.
Мухаммед Абдул-Рахим

Быстрый поиск Google в W3C показывает, что XMP был представлен для отображения предварительно отформатированного текста в HTML 3.2 и более ранних версиях. Когда W3C отказался от тега XMP, он предложил использовать тег PRE в качестве предпочтительной альтернативы. Обновление: w3.org/TR/REC-html32#xmp , w3.org/MarkUp/html-spec/html-spec_5.html#SEC5.5.2.1 поделиться изменить следуйте флаг
kophygiddie

3

Вы можете использовать htmlentities при отображении в браузере, это будет показывать тег, а не использовать html для его интерпретации.

Смотрите здесь http://uk3.php.net/manual/en/function.htmlentities.php

Пример:

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

Вывод:

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

1

Используйте htmlentities () для преобразования символов, которые в противном случае отображались бы как HTML.


0

Есть другой способ ...

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

Это делает всю страницу простым текстом ... лучше htmlspecialchars ...

Надеюсь это поможет...


0

Родной JavaScript-подход -

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

Наслаждайтесь!


1
JavaScript не отмечен в этом посте.
Ишервуд

1
Спасибо. Это полезно для меня.
Хан Динь Хоанг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.