interdire le html sans interdire < >

Invité
Invité n'ayant pas de compte PHPfrance

29 sept. 2005, 13:53

Bonjour à tous,

dans un textarea, je souhaite interdire la saisie de code html. je pensais donc faire une regex qui empeche d'ecrire les caractères < et >, mais je me rend compte que il serait bien tout de même que ces caracteres puissent être tapés, si jamais la personne a envie d'ecrire 2 < 3 par exemple.

Comment faire ?

je viens de regarder du coté des fonctions htmlspecialchars() et htmlentities() mais je ne comprend pas bien comment m'en servir ? la seule solution possible se trouve dans ces fonctions ?

Invité
Invité n'ayant pas de compte PHPfrance

29 sept. 2005, 14:32

htmlentities est plus complet que htmlspecialchars.

htmlspecialchars ne remplacera que ça:
Les remplacements effectués sont :

*

"&" (et commercial) devient "&"
*

""" (guillemets doubles) devient """ lorsque ENT_NOQUOTES n'est pas utilisé.
*

"'" (single quote) devient "'" uniquement lorsque ENT_QUOTES est utilisé.
*

"<" (inférieur à) devient "<"
*

">" (supérieur à) devient ">"
htmlentities quand à lui remplacera les mêmes signes plus tous les autres qui ont une correspondance en entitée html, c'est à dire:
http://www.commentcamarche.net/html/htmlcarac.php3

ensuite tu as également deux autres options qui permettent de convertir guillemets simples et doubles ou non(ENT_COMPAT,...) et de choisir ton charset.

http://fr2.php.net/manual/fr/function.htmlentities.php
http://fr2.php.net/manual/fr/function.h ... lchars.php

VaN
Mammouth du PHP | 1107 Messages

29 sept. 2005, 14:43

dsl, c'etait moi le post en haut, j'avais oublié de me log. en fait j'y comprends pas beaucoup mieux, malgré toutes ces informations.

Il suffit que sur le champ texte que je récupere, j'applique la fonction html_specialchars() ? les caracteres html seront "traduits" ? j'aurais donc dans ma base de données des chose du genre &amp ? comment re-afficher le caractere normal en sortie ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 sept. 2005, 15:00

j'aurais donc dans ma base de données des chose du genre &amp ?
tu n'a qu'a faire des test pour voir ce que ça donne :wink:
comment re-afficher le caractere normal en sortie ?
ça se fait tout seul, vive le HTML

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

29 sept. 2005, 15:05

et je te rajouterais que si les données dans ta base doivent servir un jour pour être imprimées, tu devras faire appel à cette fonction qui réalise l'opération inverse:
http://fr.php.net/manual/fr/function.ht ... decode.php

donc même système:
$nv_chaine=html_entity_decode($_chaine_a_decoder);