[PHP] Jak zamienić znaki HTML na encje?

Gdyby chcieć wyświetlić znaki HTML takie jak np. <> na stronie wstawiając je po prostu z klawiatury, jej wygląd zacząłby się psuć. Strona zaczęłaby się rozjeżdżać, elementy wyświetlałyby się niepoprawnie. To samo by się działo w przypadku pobrania nieprzefiltrowanego tekstu z bazy. Dlatego gdy zajdzie potrzeba przesłania znaków specjalnych do bazy danych, należy przed zapisem zamienić je na bezpieczne dane - w tym przypadku na encje HTML.

W PHP do konwersji znaków specjalnych na encje służy odpowiednia funkcja - htmlentities. Funkcja ta przyjmuje jako główny argument tekst, który ma zostać przefiltrowany i zwraca już bezpieczny, który można wyświetlić na stronie.

Przykład użycia htmlentities

<?php

$text = '<To jest przykładowy tekst ze znakami HTML>';

echo htmlentities($text, ENT_QUOTES);

W powyższym przykładzie znaki <> zostaną zamienione na &lt;&gt;.

Funkcja htmlentities przyjmuje jeszcze trzy opcjonalne argumenty:

  • $flags int - flagi ustawiane poprzez stałe, domyślnie ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401
  • $encoding string - kodowanie znaków, domyślnie będzie to wartość default_charset najprawdopodobniej UTF-8
  • $double_encode bool - domyślnie true i włącza konwersję wszystkiego, jeśli zostanie ustawione na false istniejące encje nie będą konwertowane

Komentarze

Popular

[HTML] Jak wstawić obrazek?

[C++] Jak obliczyć pole i obwód trapezu?

[PHP] Jak pobrać adres strony?