martins13
Messages postés66Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention19 juin 2008
-
14 juin 2007 à 17:25
martins13
Messages postés66Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention19 juin 2008
-
18 juin 2007 à 09:40
Salut à tous!!!
Je cherche à faire une expression régulière pour une adresse postale du type :
13, Boulevard Baille
Mais je veux que les caractères accentués soient pris en compte, mon expression fonctionne sauf lorsque je met un de ces caractères "àáâäçèéêëìíîïðòóôõöùúûü"
Voici ma fonction:
DiGhan
Messages postés239Date d'inscriptionsamedi 21 février 2004StatutMembreDernière intervention 3 juin 20101 15 juin 2007 à 21:13
En effet le problème vient de htmlentities puisque les accents sont encodés avec leurs equivalents &...; . Dans tous les cas, le masque ne match pas les chaines qui contiennent les caractères < > & = " '. Donc l'utilisation de htmlentities n'est plus nécessaire.
DiGhan
Messages postés239Date d'inscriptionsamedi 21 février 2004StatutMembreDernière intervention 3 juin 20101 15 juin 2007 à 12:33
Salut,
dans ton cas, c'est la classe \w qu'il faut utiliser. Cette classe supporte les accents ainsi que les caractères - et _. Le masque final devient alors :
<?php
$address = '182, rue des àáâäçèéêëìíîïðòóôõöùúûü';
$pattern = '#^\d{1,3}?,?\s*(\w[ ]?){3,50}$#i'; // \s classe des caractères d'espacement
echo preg_match($pattern,$address)?'true':'false';
martins13
Messages postés66Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention19 juin 2008 15 juin 2007 à 16:18
Merci les classes je les utilise pas assez, ca simplifie mon expression comme ca mais la classe \w ne marche pas apparement pour les caractères accentués. Je viens de tester...
DiGhan
Messages postés239Date d'inscriptionsamedi 21 février 2004StatutMembreDernière intervention 3 juin 20101 15 juin 2007 à 17:45
La chaine analysée (dans l'exemple) est pourtant composée de l'ensemble des accents que tu utilises. C'est l'exemple qui ne marche pas ou ton adaptation de ce code ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
martins13
Messages postés66Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention19 juin 2008 15 juin 2007 à 18:06
Alors effectivement j'ai testé ton exemple fonctionne mais voilà mon adaption ne fonctionne pas et ce que cela viendrais du fait que j'utilise htmlentities. Voilà le bout de code :
<?php
if (isset($_POST['textfield2']))
{
$adresse = htmlentities($_POST['textfield2']);
$pattern = '#^\d{1,3}?,?\s*(\w[ ]?){3,50}$#i';
// incrémenter la variable $nb_faux si les champs du formulaire sont vides
if (empty($_POST['textfield2']))
{
?>Champs non rempli</td><?
$nb_faux++;
}else{
// incrémenter la variable $nb_faux si des caracteres ne sont pas autorisés pour l'adresse
?><td width="164"><?
if (!preg_match($pattern, $adresse))
{
?>Caractères non autorisés pour l'adresse<?
$nb_faux++;}}}
?>