htmlspecialchars
(PHP 4, PHP 5)
htmlspecialchars — Convertit les caractères spéciaux en entités HTML
Description
$string
[, int $flags
= ENT_COMPAT | ENT_HTML401
[, string $encoding
= 'UTF-8'
[, bool $double_encode
= true
]]] )Certains caractères ont des significations spéciales en HTML, et doivent être remplacés par des entités HTML pour conserver leurs significations. Cette fonction retourne une chaîne de caractères avec ces modifications. Si vous avez besoin que toutes les sous-chaînes en entrée qui sont associées à des entités nommées soient transformées, utilisez la fonction htmlentities().
Si la chaîne en entrée passée à cette fonction et le document final partagent le même jeu de caractères, cette fonction est suffisante pour préparer l'entrée pour une inclusion dans la plupart des contextes d'un document HTML. Si cependant, l'entrée peut présenter des caractères qui ne sont pas codés dans le jeu de caractères du document final, et que vous souhaitez épargner ces caractères (comme des numériques ou des entités nommés), cette fonction et la fonction htmlentities() (qui n'encodes que les sous-chaînes qui ont des entités nommés équivalentes) ne sont pas suffisantes. Vous devez utiliser la fonction mb_encode_numericentity() à la place.
Les remplacements effectués sont :
- "&" (et commercial) devient "&"
-
""" (guillemets doubles) devient
""" (ou ') lorsque
ENT_NOQUOTES
n'est pas utilisée. -
"'" (guillemet simple) devient
' uniquement lorsque
ENT_QUOTES
est utilisée. - "<" (inférieur à) devient "<"
- ">" (supérieur à) devient ">"
Liste de paramètres
-
string
-
La chaîne à convertir.
-
flags
-
Un masque d'un ou plusieurs drapeaux suivants, qui déterminent la façon dont les guillemets seront gérés, dont les séquences de code invalide seront gérées ainsi que le type du document utilisé. Par défaut, ce sera ENT_COMPAT | ENT_HTML401.
Constantes disponibles pour flags
Constante Description ENT_COMPAT
Convertit les guillemets doubles, et ignore les guillemets simples. ENT_QUOTES
Convertit les guillemets doubles et les guillemets simples. ENT_NOQUOTES
Ignore les guillemets doubles et les guillemets simples. ENT_IGNORE
Ignore les séquences de caractères invalides plutôt que de retourner une chaine vide. L'utilisation de ce drapeau est fortement déconseillé pour des » raisons de sécurité. ENT_SUBSTITUTE
Remplace les séquences de code invalide avec un caractère de remplacement Unicode U+FFFD (UTF-8) ou &#FFFD; (sinon) au lieu de retourner une chaîne vide. ENT_DISALLOWED
Remplace les points du code invalides du document fourni avec un caractère de remplacement Unicode U+FFFD (UTF-8) ou &#FFFD; (sinon) au lieu de le laisser tel quel. Ceci peut être utile pour, par exemple, s'assurer du bon formatage de documents XML contenant du contenu externe. ENT_HTML401
Gère le code comme étant du HTML 4.01. ENT_XML1
Gère le code comme étant du XML 1. ENT_XHTML
Gère le code comme étant du XHTML. ENT_HTML5
Gère le code comme étant du HTML 5. -
encoding
-
Encodage à utiliser lors de la conversion. Si omis, la valeur par défaut de cet argument sera ISO-8859-1 dans les versions antérieures à PHP 5.4.0, et UTF-8 à partir de la version PHP 5.4.0.
Pour cette fonction, les encodages ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252, et KOI8-R sont équivalents, à condition que le paramètre
string
soit valable pour l'encodage, dans le sens où les caractères affectés par la fonction htmlspecialchars() occupent la même position dans tous ces encodages.Les jeux de caractères suivants sont supportés :
Jeux de caractères supportés Jeux de caractères Alias Description ISO-8859-1 ISO8859-1 Europe occidentale, Latin-1. ISO-8859-5 ISO8859-5 Jeu de caractère cyrillique rarement utilisé (Latin/Cyrillic). ISO-8859-15 ISO8859-15 Europe occidentale, Latin-9. Dispose du signe Euro, des caractères spéciaux français et finlandais, qui manquent au Latin-1 (ISO-8859-1). UTF-8 Unicode 8 bits multioctets, compatible avec l'ASCII cp866 ibm866, 866 Jeu de caractères Cyrillique spécifique à DOS. cp1251 Windows-1251, win-1251, 1251 Jeu de caractères Cyrillic spécifique à Windows. cp1252 Windows-1252, 1252 Jeu de caractères spécifique de Windows pour l'Europe occidentale. KOI8-R koi8-ru, koi8r Russe. BIG5 950 Chinois traditionnel, principalement utilisé à Taïwan. GB2312 936 Chinois simplifié, officiel. BIG5-HKSCS Big5 avec les extensions de Hong Kong, chinois traditionnel. Shift_JIS SJIS, SJIS-win, cp932, 932 Japonais EUC-JP EUCJP, eucJP-win Japonais MacRoman Jeu de caractères utilisé par Mac OS. '' Une chaîne vide active la détection de l'encodage depuis un script (multi-octet Zend), default_charset et la locale courante (voir nl_langinfo() et setlocale()), dans cet ordre. Non recommandé. Note: Les autres jeux de caractères ne sont pas reconnus. L'encodage par défaut sera utilisé à la place et une alerte sera émise.
-
double_encode
-
Lorsque le paramètre
double_encode
est désactivé, PHP n'encodera pas les entités html existants ; par défaut, tout est converti.
Valeurs de retour
La chaîne convertie.
Si la chaîne d'entrée string
contient une
séquence de code invalide dans le paramètre
encoding
fourni, une chaîne vide sera retournée
à moins que le drapeau ENT_IGNORE
ou le drapeau
ENT_SUBSTITUTE
ne soit défini.
Historique
Version | Description |
---|---|
5.4.0 |
La valeur par défaut du paramètre encoding
est passée à UTF-8.
|
5.4.0 |
Les constantes ENT_SUBSTITUTE , ENT_DISALLOWED ,
ENT_HTML401 , ENT_XML1 ,
ENT_XHTML et ENT_HTML5 ont été ajoutées.
|
5.3.0 |
La constante ENT_IGNORE a été joutée.
|
5.2.3 |
Ajout du paramètre double_encode .
|
4.1.0 |
Ajout du paramètre encoding .
|
Exemples
Exemple #1 Exemple avec htmlspecialchars()
<?php $new = htmlspecialchars("<a href="/manuel-php/, ENT_QUOTES); echo $new; // <a href=&" data-lbox="1" title="Manuel PHP - Notes Note: Notez que cette fonction ne fait aucun autre remplacement que ceux qui sont listés ci-dessus. Pour faire un remplacement total, voyez plutôt htmlentities()">Notes Note: Notez que cette fonction ne fait aucun autre remplacement que ceux qui sont listés ci-dessus. Pour faire un remplacement total, voyez plutôt htmlentities()</a></span>. </p> </p></blockquote> </div> <div class="refsect1 seealso" id="refsect1-function.htmlspecialchars-seealso"> <h3 class="title">Voir aussi</h3> <p class="para"> <ul class="simplelist"> <li class="member"> <span class="function"><a href="/manuel-php/function.get-html-translation-table.php" data-lbox="1" data-hovercard="1" data-hovercard_type="manuel_php" data-hovercard_data="get_html_translation_table" data-hovercard_callback="manuel.card" title="Manuel PHP - get_html_translation_table()">get_html_translation_table()</a> - Retourne la table de traduction des entités utilisée par htmlspecialchars et htmlentities</span></li> <li class="member"> <span class="function"><a href="/manuel-php/function.htmlspecialchars-decode.php" data-lbox="1" data-hovercard="1" data-hovercard_type="manuel_php" data-hovercard_data="htmlspecialchars_decode" data-hovercard_callback="manuel.card" title="Manuel PHP - htmlspecialchars_decode()">htmlspecialchars_decode()</a> - Convertit les entités HTML spéciales en caractères</span></li> <li class="member"> <span class="function"><a href="/manuel-php/function.strip-tags.php" data-lbox="1" data-hovercard="1" data-hovercard_type="manuel_php" data-hovercard_data="strip_tags" data-hovercard_callback="manuel.card" title="Manuel PHP - strip_tags()">strip_tags()</a> - Supprime les balises HTML et PHP d'une chaîne</span></li> <li class="member"> <span class="function"><a href="/manuel-php/function.htmlentities.php" data-lbox="1" data-hovercard="1" data-hovercard_type="manuel_php" data-hovercard_data="htmlentities" data-hovercard_callback="manuel.card" title="Manuel PHP - htmlentities()">htmlentities()</a> - Convertit tous les caractères éligibles en entités HTML</span></li> <li class="member"> <span class="function"><a href="/manuel-php/function.nl2br.php" data-lbox="1" data-hovercard="1" data-hovercard_type="manuel_php" data-hovercard_data="nl2br" data-hovercard_callback="manuel.card" title="Manuel PHP - nl2br()">nl2br()</a> - Insère un retour à la ligne HTML à chaque nouvelle ligne</span></li> </ul> </p> </div> </div>