IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Masque pour lettres avec accents [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Points : 139
    Points
    139
    Par défaut Masque pour lettres avec accents
    Bonjour,
    la fonction devrait permettre de valider une chaine de caractères représentant une adresse géographique type : 20 rue de l'embarcadère

    or il apparait que $result est vide ! pour cet exemple

    Par contre, 30 rue de la gare fonctionne donc le souci provient des accents.
    La fonction setlocale ne suffit apparemment pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     function EstAdresse($e)
     {
     	setlocale(LC_CTYPE, 'fr_FR', 'fr_FR.ISO-8859-1', 'french');
    	if($e!="")
    	{
    		$moule="#^([[:alnum:]|\s|']+)$#";
    		preg_match($moule, $e, $result);
    		print_r($result);
    		if(!empty($result)){
    			return false;
    		}
    		return true;
    	}
     }
    Pouvez-vous me corriger?
    merci

  2. #2
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Bonsoir,

    d'où vient $e ?

    ce code fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match("#^([[:alnum:]|\s|']+)$#", "20 rue de l'embarquadère", $result);
    var_dump($result);
    fait un strlen() sur $e pour vérifier l'encodage (si utf8 les accents pèsent 2 octets).

  3. #3
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    J'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    preg_match("#^([[:alnum:]|\s|']+)$#", "é", $result);
    echo "longueur:".strlen("é")."<br/>";
    var_dump($result);
    et voici les résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    longueur : 8
    array(0){}
    faut-il que je force utf8 dans l'entete de la page html ?

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 64
    Points : 96
    Points
    96
    Par défaut
    longueur : 8 vient de "é" = "&eacute;"

    Premierement, ton pattenr n'a pas de bornes mais ca c'est pas très important.
    Ensuite essaye avec 'é' plutôt que "é". on ne sait jamais
    Test : 12 rue de l'embarcadère
    pattern : '#è#'
    résultat : array ( 0 => 'è', )


    Sinon fait un strtr pour remplacer tous les accents ^^ et tu teste la chaine ainsi créée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $accents = "ÁáÀàÂâÄäÃãÅåÇçÉéÈèÊêËëÍíÌìÎîÏïÑñÓóÒòÔôÖöÕõÚúÙùÛûÜüÝýÿ";
    $sans_accents = "AaAaAaAaAaAaCcEeEeEeEeIiIiIiIiNnOoOoOoOoOoUuUuUuUuYyy";
    $text_iso = strtr($text, $accents, $sans_accents);

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    utilise l'option u, et au passage une vrai classe PCRE pas une POSIX

  6. #6
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    voici l'expression pcre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $moule="#([\w|\s|']+)#U";
    preg_match($moule, "réaliser un mémoire délicat", $result);
    Encore merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. string functions(détecter lettres avec accents)
    Par patburn_911 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/02/2013, 10h22
  2. D2007 - Indy10 - IdHTTP et lettres avec accent
    Par sbadecoder dans le forum Composants VCL
    Réponses: 5
    Dernier message: 13/12/2011, 18h15
  3. absence totale des lettres avec accent
    Par heeedi dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 06/03/2010, 15h22
  4. [Layout] Problème de lettre avec accent
    Par kanzarih dans le forum Autres composants
    Réponses: 1
    Dernier message: 22/04/2009, 07h35
  5. [Tableaux] Affichage des lettres avec accents
    Par Fredo02 dans le forum Langage
    Réponses: 11
    Dernier message: 12/12/2007, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo