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);
?>

La sortie HTML du code suivant est la suivante (voir le code source) :

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

La sortie du navigateur du code suivant :

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

Exemple de fonctionnement

Definition and usage

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

The predefined characters are:

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

Tip: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 - Replace invalid encoding with a specified character that has a Unicode replacement character U+FFFD (UTF-8) or &#FFFD;, rather than returning an empty string.
  • ENT_DISALLOWED - Replace invalid code points in the specified document type with the Unicode replacement character U+FFFD (UTF-8) or &#FFFD;.

Drapeaux supplémentaires pour définir le type de document utilisé :

  • ENT_HTML401 - Par défaut. Traite le code comme HTML 4.01.
  • ENT_HTML5 - Traite le code comme HTML 5.
  • ENT_XML1 - Traite le code comme XML 1.
  • ENT_XHTML - Traite le code comme XHTML.
character-set

Optionnel. Une chaîne indiquant l'ensemble de caractères à utiliser.

Valeurs autorisées :

  • UTF-8 - Par défaut. ASCII compatible, 8 bits Unicode de plusieurs octets
  • ISO-8859-1 - Europe occidentale
  • ISO-8859-15 - Europe occidentale (ajout des symboles euro + lettres françaises et finnoises manquantes dans ISO-8859-1)
  • cp866 - Ensemble de caractères cyrillique spécifique à DOS
  • cp1251 - Ensemble de caractères cyrillique spécifique à Windows
  • cp1252 - Ensemble de caractères européen spécifique à Windows
  • KOI8-R - Russe
  • BIG5 - Chinois traditionnel, principalement utilisé à Taïwan
  • GB2312 - Chinois simplifié, ensemble de caractères national
  • BIG5-HKSCS - Big5 avec extension pour Hong Kong
  • Shift_JIS - Japonais
  • EUC-JP - Japonais
  • MacRoman - Ensemble de caractères utilisé par le système d'exploitation Mac

Remarque :Dans les versions de PHP 5.4 précédentes, les ensembles de caractères non reconnus étaient ignorés et remplacés par ISO-8859-1. Depuis PHP 5.4, les ensembles de caractères non reconnus sont ignorés et remplacés par UTF-8.

double_encode

Optionnel. Booléen, indiquant si les entités HTML existantes doivent être codées.

  • TRUE - Par défaut. Convertira chaque entité.
  • FALSE - Ne codera pas les entités HTML existantes.

Détails techniques

Retour :

Retourne la chaîne convertie.

Si string Si l'encodage est invalide, une chaîne vide est retournée, sauf si l'un des drapeaux ENT_IGNORE ou ENT_SUBSTITUTE a été défini.

Version PHP : 4+
Journal des mises à jour :

Dans PHP 5,character-set La valeur par défaut du paramètre est modifiée en UTF-8.

Dans PHP 5.4, les nouvelles fonctions ajoutées sont : ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 et ENT_XHTML.

Dans PHP 5.3, une nouvelle fonction a été ajoutée : ENT_IGNORE.

Dans PHP 5.2.3, une nouvelle fonction a été ajoutée double_encode Paramètres.

Dans PHP 4.1, un nouveau character-set Paramètres.

Plus d'exemples

Exemple 1

Convertir certains caractères prédéfinis en entités HTML :

<?php
$str = "Bill & 'Steve'";
echo htmlspecialchars($str, ENT_COMPAT); // Ne convertir que les guillemets doubles
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES); // Convertir les guillemets doubles et simples
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // Ne convertir aucune citation
?>

La sortie HTML du code suivant est la suivante (voir le code source) :

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

La sortie du navigateur du code suivant :

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

Exemple de fonctionnement

Exemple 2

Convertir les guillemets doubles en entités HTML :

<?php
$str = 'I love "PHP".';
echo htmlspecialchars($str, ENT_QUOTES); // Convertir les guillemets doubles et simples
?>

La sortie HTML du code suivant est la suivante (voir le code source) :

<!DOCTYPE html>
<html>
<body>
Je aime "PHP".
</body>
</html>

La sortie du navigateur du code suivant :

Je aime "PHP".

Exemple de fonctionnement