un preg_match n'excluant pas les guillemets

Eléphant du PHP | 112 Messages

02 janv. 2011, 23:58

Bonjour,

Cherchant à exclure un certain type de caractères, dont les guillemets d'une chaine, j'utilise le code:
if(!preg_match ('/[a-zA-Z 0-9 éëêèàäâçôùûüî-]$/', $sujet))
{echo "caractères non conformes";}
Pour tous les caractères autres que ceux définis par l'expression régulière, j'ai bien "caractères non conformes" qui s'affiche, mais pas pour les guillemets placés à l'intérieur de $sujet, alors que si mon guillemet est à la fin de $sujet, "caractères non conformes" s'affiche...

Merci pour vos lumières,
et bons voeux,
cordialement,

Thierry

ViPHP
ViPHP | 5462 Messages

03 janv. 2011, 00:07

il suffis juste de rajouter le guillemet pour ton expression
faire un expression du genre :
preg_match ('/^[\w\x20\x22\x27\x2D]+$/u', $sujet);
\w : toutes les caratere alphanumerique (dont les accent grace a l'option u)
\x20 : le code ascii pour l'espace
\x22 : le code ascii pour le guillmet
\x27 : le code ascii pour l'apostophe
\x27 : le code ascii pour le tiret

pourquoi les code ascii ? par que qu'on a pas besoin de les echaper :wink:

Eléphant du PHP | 112 Messages

03 janv. 2011, 01:01

Super!
J'ai ajouté x5C pour l'antislash pour faire bonne mesure.
Merci beaucoup,

Thierry