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ć?

użytkownik517593
źródło

Odpowiedzi:

296

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

Darm
źródło
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
235

W PHP użyj funkcji htmlspecialchars (), aby uciec <i >.

htmlspecialchars('<strong>something</strong>')
kulminacja
źródło
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>';
Jarrod
źródło
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;
Luiz Damim
źródło
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;
?>
Nikunj K.
źródło
6

Musisz tylko zakodować <>s:

&lt;strong&gt;Look just like this line - so then know how to type it&lt;/strong&gt;
James Montagne
źródło
5

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

Paulo Henrique
źródło
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>
martynthewolf
źródło
1

Użyj htmlentities () do konwersji znaków, które w innym przypadku byłyby wyświetlane jako HTML.

Reuben
źródło
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...

Alessandro
źródło
0

Natywne podejście JavaScript -

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

Cieszyć się!

simonbor
źródło
1
JavaScript nie jest oznaczony w tym poście.
isherwood
1
Dziękuję Ci. Jest to dla mnie przydatne.
Khang Dinh Hoang