Jak wyświetlić tagi HTML jako zwykły tekst


211

Mam formularz wejściowy na mojej stronie internetowej, gdzie HTML jest dozwolony i próbuję dodać instrukcje dotyczące używania tagów HTML. Chciałbym, żeby ten tekst

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

Ale jak dotąd dostaję tylko:

Wyglądaj tak jak ta linia - więc wiedz, jak ją wpisać

Jak mogę wyświetlić tagi, aby ludzie wiedzieli, co pisać?

Odpowiedzi:


296

Wymień <się &lt;i >z &gt;.


6
Technicznie rzecz biorąc , wystarczy zastąpić <przez < aby został rozpoznany przez większość przeglądarek, ale> przez & gt; jest dobrą praktyką
cwallenpoole,

8
@Darm -1 za brak wzmianki o htmlspecialchars (). Jeśli istnieje ku temu uzasadniony powód, popraw mnie :)
Ronen Ness,

7
Jeśli tekst pytania miałby zostać wygenerowany przez PHP, htmlspecialchars () robi to, co sugeruje ta odpowiedź: zamień znaki mniejsze i większe niż (i inne) na ich encje HTML . Ale pytanie nie określa, więc ta bardziej ogólna odpowiedź jest nadzbiorem wszystkich odpowiedzi specyficznych dla PHP. Pytanie dotyczy naprawdę HTML.
obsłużyć

W przeciwieństwie do innych komentarzy, ta odpowiedź oszczędza mi 100%, niektóre z odpowiedzi, które tu znalazłem, mówią po prostu użyj php i echo "<? // like this?>"; ale to wcale nie pomogło. Z drugiej strony ta odpowiedź oszczędza mi w sumie 17 znaków, a @handle ma rację, więc zagłosowałem.
ailia


55

Jak wielu innych powiedziało, htmlentities()załatwi sprawę ... ale będzie to wyglądało jak gówno.

Zakończ to <pre>tagiem, a zachowasz wcięcie.

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

36

Powinieneś użyć htmlspecialchars. Zastępuje znaki jak poniżej:

  • „&” (ampersand) staje się &amp;
  • „” (podwójny cudzysłów) staje się, &quot;gdy ENT_NOQUOTES nie jest ustawiony.
  • „” „(pojedynczy cudzysłów) staje się &#039;tylko wtedy, gdy ustawiono ENT_QUOTES.
  • „<” (mniej niż) staje się &lt;
  • „>” (większe niż) staje się &gt;

13

możesz użyć htmlspecialchars ()

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

6

Musisz tylko zakodować <>s:

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

5

Aby wyświetlić znaczniki HTML w przeglądarce, otaczaj dane wyjściowe znacznikami <xmp> i </ xmp>


4
<xmp> jest już przestarzały, więcej niż przestarzały. Nie używaj tego.
Muhammad Abdul-Rahim

Szybkie wyszukiwanie Google w W3C ujawnia, że ​​XMP został wprowadzony do wyświetlania wstępnie sformatowanego tekstu w HTML 3.2 i wcześniejszych. Gdy W3C wycofało znacznik XMP, zasugerowało użycie znacznika PRE jako preferowanej alternatywy. Aktualizacja: w3.org/TR/REC-html32#xmp , w3.org/MarkUp/html-spec/html-spec_5.html#SEC5.5.2.1 udostępnij edytuj flagę śledzenia
kophygiddie

3

Możesz używać htmlentities podczas echa w przeglądarce, spowoduje to wyświetlenie znacznika zamiast interpretacji go przez html.

Zobacz tutaj http://uk3.php.net/manual/en/function.htmlentities.php

Przykład:

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

Wynik:

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


0

Jest inny sposób ...

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

To sprawia, że ​​cała strona jest wyświetlana jako zwykły tekst ... lepiej jest htmlspecialchars ...

Mam nadzieję że to pomoże...


0

Natywne podejście JavaScript -

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

Cieszyć się!


1
JavaScript nie jest oznaczony w tym poście.
isherwood

1
Dziękuję Ci. Jest to dla mnie przydatne.
Khang Dinh Hoang
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.