PHP htmlspecialchars() function

Example

Convert predefined characters "<" (less than) and ">" (greater than) to HTML entities:

<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars($str);
?>

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

<!DOCTYPE html>
<html>
<body>
This is some <b>bold</b> text.
</body>
</html>

Wyjście przeglądarki powyższego kodu:

This is some <b>bold</b> text.

Uruchomienie przykładu

Definition and usage

The htmlspecialchars() function converts predefined characters to HTML entities.

Predefined characters are:

  • & (ampersand) becomes &
  • " (double quote) becomes "
  • ' (single quote) becomes '
  • < (less than) becomes <
  • > (greater than) becomes >

Hint:To convert special HTML entities back to characters, use htmlspecialchars_decode() Function.

Syntax

htmlspecialchars(string,flags,character-set,double_encode)
Parameter Description
string Required. Specifies the string to be converted.
flags

Optional. Specifies how to handle quotes, invalid encoding, and which document type to use.

Available quote types:

  • ENT_COMPAT - Default. Encode double quotes only.
  • ENT_QUOTES - Encode both double and single quotes.
  • ENT_NOQUOTES - Do not encode any quotes.

Invalid encoding:

  • ENT_IGNORE - Ignore invalid encoding instead of returning an empty string from the function. It should be avoided as it may have security implications.
  • ENT_SUBSTITUTE - Substitute invalid encoding with a specified character that has the Unicode replacement character U+FFFD (UTF-8) or &#FFFD;, rather than returning an empty string.
  • ENT_DISALLOWED - Substitute invalid code points in the specified document type with the Unicode replacement character U+FFFD (UTF-8) or &#FFFD;.

Dodatkowe flags dla określonego typu dokumentu:

  • ENT_HTML401 - domyślne. 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żywany zestaw znaków.

Dopuszczalne wartości:

  • UTF-8 - domyślne. 8-bitowe Unicode z kompatybilnością ASCII
  • ISO-8859-1 - Europa Zachodnia
  • ISO-8859-15 - Europa Zachodnia (zawiera znaki euro + brakujące litery francuskie i fińskie w ISO-8859-1)
  • cp866 - zestaw znaków używany wyłącznie w systemie DOS dla cyrylicy
  • cp1251 - zestaw znaków używany wyłącznie w systemie Windows dla cyrylicy
  • cp1252 - zestaw znaków używany wyłącznie w systemie Windows dla zachodniej Europy
  • KOI8-R - język rosyjski
  • BIG5 - chiński z tradycyjnymi znakami, głównie używany na Tajwanie
  • GB2312 - chiński z uproszczonymi znakami, standardowa kolekcja 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, nieznane zestawy znaków są ignorowane i zastępowane przez ISO-8859-1. Od PHP 5.4, nieznane zestawy znaków są ignorowane i zastępowane przez UTF-8.

double_encode

Opcjonalne. Wartość logiczna określająca, czy istniejące HTML entity mają być zakodowane.

  • TRUE - Domyślne. Koduje każdą entytę.
  • FALSE - Nie koduje istniejących HTML entity.

Szczegółowe informacje techniczne

Zwracana wartość:

Zwraca przekształcony ciąg znaków.

Jeśli string Jeśli zawiera niepoprawne kodowanie, zwraca pustą ciąg znaków, 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

Konwersja niektórych zdefiniowanych znaków na entuty HTML:

<?php
$str = "Bill & 'Steve'";
echo htmlspecialchars($str, ENT_COMPAT); // Konwersja tylko podwójnych cudzysłów
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES); // Konwersja podwójnych i pojedynczych cudzysłów
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // Nie konwertuj żadnych cudzysłów
?>

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

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

Wyjście przeglądarki powyższego kodu:

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

Uruchomienie przykładu

Przykład 2

Konwersja podwójnych cudzysłów na entuty HTML:

<?php
$str = 'I love "PHP".';
echo htmlspecialchars($str, ENT_QUOTES); // Konwersja podwójnych i pojedynczych cudzysłów
?>

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

<!DOCTYPE html>
<html>
<body>
Kocham "PHP".
</body>
</html>

Wyjście przeglądarki powyższego kodu:

Kocham "PHP".

Uruchomienie przykładu