PHP htmlspecialchars()Fonctions

PHP String 参考手册Manuel de référence des chaînes PHP

Exemples

Convertissez les caractères prédéfinis "<" (inférieur à) et ">" (supérieur à) en entités HTML :

<?php $str = "Ceci est un texte <b>en gras</b>."; echo htmlspecialchars($str); ?>

La sortie HTML du code ci-dessus est la suivante (afficher la source) :

<!DOCTYPE html> <html> <body> Ceci est un &lt;b&gt;gras&lt;/b&gt; texte. </body> </html>

La sortie du navigateur du code ci-dessus est la suivante :

Ceci est un texte <b>en gras</b>.

Exécuter l'exemple »

Définition et utilisation

La fonction htmlspecialchars() convertit certains caractères prédéfinis en entités HTML.

Les caractères prédéfinis sont :

  • & (esperluette) devient &amp;
  • " (guillemet double) devient &quot;
  • ' (apostrophe) devient &#039;
  • < (inférieur à) devient &lt;
  • > (supérieur à) devient &gt;

Astuce :Pour reconvertir les entités HTML spéciales en caractères, utilisez htmlspecialchars_decode()fonction.


Syntaxe

htmlspecialchars(string,flags,character-set,double_encode)

Paramètre Description
string Obligatoire. Spécifie la chaîne à convertir.
indicateurs Facultatif. Spécifie comment gérer les guillemets, l'encodage invalide et le type de document à utiliser.

Types de guillemets disponibles :

  • ENT_COMPAT - Par défaut. Encode uniquement les guillemets doubles.
  • ENT_QUOTES - Encode les guillemets doubles et simples.
  • ENT_NOQUOTES - N'encode aucun guillemet.

Encodage invalide :

  • ENT_IGNORE - Ignore l'encodage invalide au lieu de faire renvoyer une chaîne vide à la fonction. À éviter, car cela peut avoir des implications de sécurité.
  • ENT_SUBSTITUTE - Remplace l'encodage invalide par un caractère spécifié avec le caractère de remplacement Unicode U+FFFD (UTF-8) ou &#FFFD;, au lieu de renvoyer une chaîne vide.
  • ENT_DISALLOWED - Remplace les points de code invalides dans le type de document spécifié par le caractère de remplacement Unicode U+FFFD (UTF-8) ou &#FFFD;.

Indicateurs supplémentaires spécifiant le type de document à utiliser :

  • ENT_HTML401 - Par défaut. Traite le code comme du HTML 4.01.
  • ENT_HTML5 - Traite le code comme du HTML 5.
  • ENT_XML1 - Traite le code comme du XML 1.
  • ENT_XHTML - Traite le code comme du XHTML.
jeu de caractères Facultatif. Une chaîne qui spécifie le jeu de caractères à utiliser.

Valeurs autorisées :

  • UTF-8 - Par défaut. Unicode 8 bits multioctet compatible ASCII
  • ISO-8859-1 - Europe occidentale
  • ISO-8859-15 - Europe occidentale (ajoute le signe euro + les lettres françaises et finnoises absentes de ISO-8859-1)
  • cp866 - Jeu de caractères cyrilliques spécifique à DOS
  • cp1251 - Jeu de caractères cyrilliques spécifique à Windows
  • cp1252 - Jeu de caractères d'Europe occidentale spécifique à Windows
  • KOI8-R - Russe
  • BIG5 - Chinois traditionnel, principalement utilisé à Taïwan
  • GB2312 - Chinois simplifié, jeu de caractères standard national
  • BIG5-HKSCS - Big5 avec extensions de Hong Kong
  • Shift_JIS - Japonais
  • EUC-JP - Japonais
  • MacRoman - Jeu de caractères utilisé par le système d'exploitation Mac

Remarque :Dans les versions antérieures à PHP 5.4, les jeux de caractères non reconnus seront ignorés et remplacés par ISO-8859-1. Depuis PHP 5.4, les jeux de caractères non reconnus seront ignorés et remplacés par UTF-8.

double_encode Facultatif. Une valeur booléennes qui spécifie s'il faut encoder les entités HTML existantes.
  • TRUE - Par défaut. Convertira chaque entité.
  • FALSE - N'encodera pas les entités HTML existantes.

Détails techniques

Valeur de retour : Retourne la chaîne convertie.

Sistringcontient un encodage non valide, retourne une chaîne vide, sauf si les drapeaux ENT_IGNORE ou ENT_SUBSTITUTE sont définis.
Version de PHP : 4+
Journal des modifications : En PHP 5, la valeur par défaut du paramètrecharacter-seta été changée en UTF-8.

Dans PHP 5.4, les éléments suivants ont été ajoutés : ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 et ENT_XHTML.

Dans PHP 5.3, ENT_IGNORE a été ajouté.

Dans PHP 5.2.3, ajout du paramètredouble_encode.

Dans PHP 4.1, ajout du paramètrecharacter-set.


Plus d’exemples

Exemple 1

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

<?php $str = "Jane & 'Tarzan'"; echo htmlspecialchars($str, ENT_COMPAT); //Par défaut, n'encode que les guillemets doubles echo "<br>"; echo htmlspecialchars($str, ENT_QUOTES); //Encode les guillemets doubles et simples echo "<br>"; echo htmlspecialchars($str, ENT_NOQUOTES); //N'encode aucun guillemet ?>

La sortie HTML du code ci-dessus est la suivante (afficher la source) :

<!DOCTYPE html> <html> <body> Jane &amp; 'Tarzan'<br> Jane &amp; 'Tarzan'<br> Jane &amp; 'Tarzan' </body> </html>

La sortie du navigateur du code ci-dessus est la suivante :

Jane & 'Tarzan'
Jane & 'Tarzan'
Jane & 'Tarzan'

Exécuter l'exemple »

Exemple 2

Convertir les guillemets doubles en entités HTML :

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

La sortie HTML du code ci-dessus est la suivante (afficher la source) :

<!DOCTYPE html> <html> <body> J'aime &quot;PHP&quot;. </body> </html>

La sortie du navigateur du code ci-dessus est la suivante :

J'aime "PHP".

Exécuter l'exemple »


PHP String 参考手册Manuel de référence des chaînes PHP Autres extensions