Funkcja PHP htmlentities()

Przykład

Konwertuj znaki na HTML-owe znaki specjalne:

<?php
$str = "<? W3S?h????>";
echo htmlentities($str);
?>

Wyjście HTML dla powyższego kodu wygląda tak (zobacz kod źródłowy):

<!DOCTYPE html>
<html>
<body>
<© W3Sçh°°¦§>
</body>
</html>

Wyjście przeglądarki dla powyższego kodu:

<? W3S?h????>

Definicja i użycie

funkcji htmlentities() do przekształcenia znaków na HTML entity.

Wskazówka:Aby przekształcić HTML entity na znak, użyj html_entity_decode() funkcji.

Wskazówka:Użyj get_html_translation_table() Funkcja zwracająca tabelę tłumaczeń używaną przez funkcję htmlentities().

Gramatyka

htmlentities(string,flags,character-set,double_encode)
Parametry Opis
string Wymagane. Określa ciąg znaków do przekształcenia.
flags

Opcjonalne. Określa sposób przetwarzania znaków cudzysłów, niewłaściwych kodów oraz używaną typologię dokumentu.

Dostępne typy znaków cudzysłów:

  • ENT_COMPAT - domyślnie. Kodowanie tylko znaków cudzysłów podwójnych.
  • ENT_QUOTES - kodowanie znaków cudzysłów podwójnych i pojedynczych.
  • ENT_NOQUOTES - niekodowanie żadnych znaków cudzysłów.

Niewłaściwe kody:

  • ENT_IGNORE - ignorowanie niewłaściwych kodów, zamiast zwracania pustego ciągu znaków. Unikać, ponieważ może to wpłynąć na bezpieczeństwo.
  • ENT_SUBSTITUTE - zastępowanie niewłaściwych kodów znakiem zdefiniowanym, który zawiera znak zastępczy Unicode U+FFFD (UTF-8) lub &#FFFD;, zamiast zwracania pustego ciągu znaków.
  • ENT_DISALLOWED - zastępowanie niewłaściwych kodów punktowanych znakiem zastępczym Unicode U+FFFD (UTF-8) lub &#FFFD;.

Dodatkowe flagi określające używaną typologię dokumentu:

  • ENT_HTML401 - domyślnie. przetwarzanie kodu jako HTML 4.01.
  • ENT_HTML5 - przetwarzanie kodu jako HTML 5.
  • ENT_XML1 - przetwarzanie kodu jako XML 1.
  • ENT_XHTML - przetwarzanie kodu jako XHTML.
character-set

Opcjonalne. ciąg znaków określający używaną kodową.

Dozwolone wartości:

  • UTF-8 - domyślnie. 8-bitowy Unicode kompatybilny z ASCII
  • ISO-8859-1 - Europa Zachodnia
  • ISO-8859-15 - Europa Zachodnia (zawiera znaki euro + znaki francuskie i fińskie brakujące w ISO-8859-1)
  • cp866 - zestaw znaków dla systemu DOS przeznaczony dla cyrylicy
  • cp1251 - zestaw znaków dla systemu Windows przeznaczony dla cyrylicy
  • cp1252 - zestaw znaków dla systemu Windows przeznaczony dla Europy Zachodniej
  • KOI8-R - język rosyjski
  • BIG5 - chiński z tradycyjnymi znakami, głównie używany na Tajwanie
  • GB2312 - chiński z uproszczonymi znakami, standardowa zbiorowość znaków
  • BIG5-HKSCS - Big5 z rozszerzeniem dla Hongkongu
  • Shift_JIS - język japoński
  • EUC-JP - język japoński
  • MacRoman - zestaw znaków używany w systemie Mac OS

Komentarz:W wersjach PHP 5.4 i wcześniejszych, niezidentyfikowane zestawy znaków są ignorowane i zastępowane przez ISO-8859-1. Od PHP 5.4, niezidentyfikowane zestawy znaków są ignorowane i zastępowane przez UTF-8.

double_encode

Opcjonalnie. Wartość logiczna, określa, czy kodować istniejące HTML-owe znaki specjalne.

  • TRUE - domyślnie. Koduje każdą entytę.
  • FALSE - Nie koduje istniejących HTML-owych znaków specjalnych.

Szczegółowe informacje techniczne

Zwracana wartość:

Zwraca przekształcony ciąg liter.

Jeśli string Jeśli zawiera niewłaściwe kodowanie, zwraca pustą ciąg liter, chyba że ustawiono znak ENT_IGNORE lub ENT_SUBSTITUTE.

Wersja PHP: 4+
Dziennik zmian:

W PHP 5,character-set Domyślna wartość parametru zmieniona na UTF-8.

W PHP 5.4 dodano: ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 i ENT_XHTML.

W PHP 5.3 dodano ENT_IGNORE.

W PHP 5.2.3 dodano double_encode Parametry.

W PHP 4.1 dodano character-set Parametry.

Więcej przykładów

Przykład 1

Konwertuj znaki na HTML-owe znaki specjalne:

<?php
$str = "Bill & 'Steve'";
echo htmlentities($str, ENT_COMPAT); // Konwertuje tylko podwójne cudzysłów
echo "<br>";
echo htmlentities($str, ENT_QUOTES); // Konwertuje podwójne i pojedyncze cudzysłów
echo "<br>";
echo htmlentities($str, ENT_NOQUOTES); // Nie konwertuje żadnych cudzysłów
?>

Wyjście HTML dla powyższego kodu wygląda tak (zobacz kod źródłowy):

<!DOCTYPE html>
<html>
<body>
Bill & 'Steve'<br>
Bill & 'Tarzan'<br>
Bill & 'Steve'
</body>
</html>

Wyjście przeglądarki dla powyższego kodu:

Bill & 'Steve'
Bill & 'Steve'
Bill & 'Steve'

Uruchomienie przykładu

Przykład 2

Przy użyciu zestawu znaków Zachodnia Europa, przekształca niektóre znaki w entuty HTML:

<?php
$str = "My name is Øyvind Øsane. I'm Norwegian.";
echo htmlentities($str, ENT_QUOTES, "ISO-8859-1"); 
// Konwertuje tylko cudzysłów podwójny (nie pojedynczy), i używa zestawu znaków Zachodnia Europa
?>

Wyjście HTML dla powyższego kodu wygląda tak (zobacz kod źródłowy):

<!DOCTYPE html>
<html>
<body>
Moje imię to Øyvind Øsane. Jestem Norwegiem.
</body>
</html>

Wyjście przeglądarki dla powyższego kodu:

Moje imię to Øyvind Øsane. Jestem Norwegiem.

Uruchomienie przykładu