Problème regex

Mammouth du PHP | 620 Messages

02 avr. 2012, 13:19

Bonjour,
pour vérifier le champ de mon formulaire j'essai d'utiliser un regex mais mon soucis est que rien ne fonctionne.
Je voudrai que tout les caractères spéciaux (autre que du texte standard) soit refusés.
j'ai donc un champ 'message' ou l'internaute peut laisser un message et ce champs je le passe dans un regex afin de contrôler si il n'y a pas du code html dedans.
$message = mysql_real_escape_string($_POST['message']);

/* Vérification validité MESSAGE */
$message_regex = '/^[a-z0-9ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ]*$/i';
if ( $message == "" OR !eregi( $message_regex , $message ) ) {
echo "<div align='center'><img src=\"../images/attention.gif\" alt=\"Attention\" /><br/>";
echo "Veuillez saisir un message. Les caractères spéciaux ne sont pas autorisés. <br/>
<a href=\"javascript:history.back()\">Retour</a></div>";
$erreur = true;
}

je veus que l'internaute puisse écrire un texte normalement c'est a dire avec des apostrophes, des virgules des points, majuscules, minuscules.... mais interdire tout autres types de caractères genre "()[]{}<>\_=+*"

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

02 avr. 2012, 13:28

salut,

http://fr2.php.net/htmlentities devrait faire l'affaire ;)


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 620 Messages

02 avr. 2012, 13:47

ok donc j'ai juste à faire ?
$message = mysql_real_escape_string(htmlentities ($_POST['message']));
Mais comment j’avertis l'internaute que son message n'est pas bon si il met du code html ?
Dans le cas de la regex on peut mettre une condition mais là je fait comment ?

ViPHP
xTG
ViPHP | 7331 Messages

02 avr. 2012, 15:58

Regardes du côté de strip_tags() pour faire cette condition.
Après passage dans strip_tags si le nombre de caractère est différent c'est qu'elle a enlevé des balises HTML.