Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/11/2004, 13h28   #1
Membre à l'essai
 
Inscription : février 2003
Messages : 54
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : février 2003
Messages : 54
Points : 23
Points : 23
Envoyer un message via MSN à Joelindien Envoyer un message via Yahoo à Joelindien Envoyer un message via Skype™ à Joelindien
Par défaut Encore les regex

Bonjour à tous !

je me demandais si il existait une séquence du type [[:alnum:]] ou [[:alpha:]] pour les caractères alphanumériques accentués ?

Parce que j'aimerais bien autoriser les caractères alphanumériques et les alphanumériques accentués sans devoir les rentrer un par un dans un ereg()

Merci d'avance.
Joelindien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2004, 14h19   #2
Membre actif
 
Avatar de doof
 
Inscription : août 2003
Messages : 159
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 159
Points : 153
Points : 153
Salut, la classe \w gere les caracteres alphanumériques et accentués si le serveur est configuré dans une langue comportant des accents.

Pour configurer un script dans une certaine langue, il faut utiliser setlocale().

Code :
setlocale(LC_ALL, 'fr');
Seulement c'est bien beau la théorie, mais pour moi ca n'a jammais marché sous freeBSD.

Je pense donc qu'il faut raisonner avec un serveur US pour garder un maximum de compatibilité.
doof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2004, 14h29   #3
Membre à l'essai
 
Inscription : février 2003
Messages : 54
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : février 2003
Messages : 54
Points : 23
Points : 23
Envoyer un message via MSN à Joelindien Envoyer un message via Yahoo à Joelindien Envoyer un message via Skype™ à Joelindien
J'ai lu ça quelquepart mais je ne me souviens plus ou.
J'ai testé aussi et ça ne fonctionne pas chez moi non plus (environnement Linux Fedora Core 2)

Dans ce cas personne s'est déjà fait un ereg() pour accepter les caractères alphanum + alphanum accentués.

Je sais je suis fénéant mais j'ai peur d'en oublier...
Joelindien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2004, 14h31   #4
Membre actif
 
Avatar de doof
 
Inscription : août 2003
Messages : 159
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 159
Points : 153
Points : 153
Je viens d'aller voir sur la doc et quelqu'un a trouvé le code miracle :
Code :
setlocale(LC_ALL, 'fr_FR.ISO8859-1');
ca marche

par contre, ca risque de ne pas marcher sur tous les serveurs.
doof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2004, 14h36   #5
Membre à l'essai
 
Inscription : février 2003
Messages : 54
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : février 2003
Messages : 54
Points : 23
Points : 23
Envoyer un message via MSN à Joelindien Envoyer un message via Yahoo à Joelindien Envoyer un message via Skype™ à Joelindien
C'est pas vrai !
Le truc archi simple

Donc un petit :

Code :
1
2
3
4
5
 
setlocale(LC_ALL, 'fr_FR.ISO8859-1');
//Ensuite un :
ereg('^[[:alnum:]]+$', $truc)
//Et ça fonctionne ?
Tu me confirmes ?
Joelindien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2004, 14h43   #6
Membre actif
 
Avatar de doof
 
Inscription : août 2003
Messages : 159
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 159
Points : 153
Points : 153
Apres test pas avec les fonction posix, par contre pcre ca marche :

Code :
1
2
setlocale(LC_ALL, 'fr_FR.ISO8859-1');
preg_match('/(\w)/', $chaine);
doof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2004, 14h47   #7
Membre à l'essai
 
Inscription : février 2003
Messages : 54
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : février 2003
Messages : 54
Points : 23
Points : 23
Envoyer un message via MSN à Joelindien Envoyer un message via Yahoo à Joelindien Envoyer un message via Skype™ à Joelindien
En effet ça fonctionne très bien !

J'ai testé sur deux configs bien différentes :

Linux Fedora Core 2, Apache 2.0.51, php 4.3.8
et
Windows XP Pro, Apache 2.0.52, php 4.3.9

Merci beaucoup doof
Joelindien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2004, 17h54   #8
Membre émérite
 
Inscription : mai 2004
Messages : 709
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 709
Points : 852
Points : 852
Sur Debian Woody le
Code :
setlocale(LC_ALL, 'fr_FR.ISO8859-1');
ne marche pas mais bien:
Code :
 setlocale(LC_CTYPE, 'fr_FR.ISO-8859-1');


Citation:
LC_CTYPE
for regular expression matching, character classi*
fication, conversion, case-sensitive comparison,
and wide character functions.
J'avais également un problème d'accent pour les classes \w et les assertions \b

Merci à Doof pour la piste.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2009, 19h26   #9
Membre à l'essai
 
Inscription : février 2003
Messages : 54
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : février 2003
Messages : 54
Points : 23
Points : 23
Envoyer un message via MSN à Joelindien Envoyer un message via Yahoo à Joelindien Envoyer un message via Skype™ à Joelindien
J'aimerais bien le faire fonctionner avec des fonctions POSIX moi
Ça doit bien faire 3 heures que je cherche à droite et à gauche et que je teste différents trucs sur le serveur mais ça veut pas.

Pourtant il me semble bien que j'avais réussi un jour
Joelindien est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h18.


 
 
 
 
Partenaires

Hébergement Web