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 24/07/2011, 18h14   #1
Membre habitué
 
Homme
Enseignant
Inscription : avril 2002
Messages : 300
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2002
Messages : 300
Points : 100
Points : 100
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 :
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
bastien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2011, 19h17   #2
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

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

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Bonsoir,

d'où vient $e ?

ce code fonctionne très bien :
Code :
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).
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 09h04   #3
Membre habitué
 
Homme
Enseignant
Inscription : avril 2002
Messages : 300
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2002
Messages : 300
Points : 100
Points : 100
Bonjour,

J'ai testé :
Code :
1
2
3
4
 
preg_match("#^([[:alnum:]|\s|']+)$#", "é", $result);
echo "longueur:".strlen("é")."<br/>";
var_dump($result);
et voici les résultats :
Code :
1
2
longueur : 8
array(0){}
faut-il que je force utf8 dans l'entete de la page html ?
bastien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 14h10   #4
Membre régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 55
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 : 55
Points : 77
Points : 77
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 :
1
2
3
$accents = "ÁáÀàÂâÄäÃãÅåÇçÉéÈèÊêËëÍíÌìÎîÏïÑñÓóÒòÔôÖöÕõÚúÙùÛûÜüÝýÿ";
$sans_accents = "AaAaAaAaAaAaCcEeEeEeEeIiIiIiIiNnOoOoOoOoOoUuUuUuUuYyy";
$text_iso = strtr($text, $accents, $sans_accents);
Avalion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 14h25   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 104
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 104
Points : 8 452
Points : 8 452
utilise l'option u, et au passage une vrai classe PCRE pas une POSIX
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 22h53   #6
Membre habitué
 
Homme
Enseignant
Inscription : avril 2002
Messages : 300
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : avril 2002
Messages : 300
Points : 100
Points : 100
Bonjour,

voici l'expression pcre :
Code :
1
2
3
 
$moule="#([\w|\s|']+)#U";
preg_match($moule, "réaliser un mémoire délicat", $result);
Encore merci !
bastien 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 11h51.


 
 
 
 
Partenaires

Hébergement Web