Expression rationnelle qui accepte les accents

WRInaute impliqué
Bonjour,

J'utilise l'expression rationnelle suivante pour filtrer un formulaire :

Code:
if(ereg('^[a-zA-Z0-9]+$', $utilisateur))

Le problème c'est qu'elle bloque les accents.


Quelqu'un saurait-il faire accepter les accents à cette expression rationnelle, ainsi que le trait d'unition (-).

Merci d'avance
 
WRInaute impliqué
Non c'est une idée, deux secondes.

**edit**

Je viens de tester cela :

Code:
if(!preg_match('`^([[:alnum:]]{4,8})$`',$passe))


Mais les accents ne passent pas non plus.
 
WRInaute accro
Bonjour,

Ce n'est peut-être pas top, mais ça devrait marcher:
Code:
if(ereg('^[a-zA-Z0-9éèêëïöôùç]+$', $utilisateur))
+ ceux que j'ai oublié... :wink:

Jean-Luc
 
WRInaute impliqué
Oui c'est assez sauvage, mais ça fonctionne et c'est le résultat qui compte. Bravo Jeanluc.

Une suggestion pour que l'expression accepte les espaces et le trait d'union ?
 
WRInaute impliqué
C'est vrai, comme disait le général De Gaulle,
"Les RegExp ont une sale tête en général."

Dire qu'il avait tout compris à l'avance. :roll:
 
WRInaute impliqué
Non Tilt, ton expression est bizarre :

Elle bloque les mot normaux sans accents ni rien, mais ceux-ci passent dès qu'ils comportent des caractères spéciaux.



Si vous savez comment faire accepter les espaces et les accents à l'expression régulière de Jeanluc...
 
WRInaute accro
Voilà, voilà... :D

Code:
if(ereg('^[a-zA-Z0-9éèêëïöôùç -]+$', $utilisateur))


Il faudrait aussi ajouter â, û,...

Jean-Luc
 
WRInaute impliqué
Bravo et merci Jeanluc, cela fonctionne !

Je pensais qu'avant un caractère spéciale comme le - (si c'est bien un caractère spécial), il fait utiliser le /.

Idem je n'aurais pas pensé qu'il suffisait de le signifier pour que l'espace soit pris en compte.



J'ai essayer cela pour l'apostrophe (au petit bonheur la chance hein) :

Code:
if(ereg('^[a-zA-Z0-9àáâãäåòóôõöøèéêëçìíîïùúûüÿñ -\']+$', $utilisateur))

Bein j'ai pas de chance à vus de nez.
 
WRInaute impliqué
Tilt a dit:
if (preg_match("/[[:alnum:]À-ÖØ-öø-ÿ]/",$texte))

Ca marche chez moi (espace,lettres,chiffres,lettres accentuées).
Le ^ était mal placé (il a un double sens: début de chaîne et condition négative 'if not')

Je viens de tester Tilt, mais si tu rajoutes par exemple ":", alors ça passe encore.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut