[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / verifier / verifier / code_postal.php
1 <?php
2
3 // Sécurité
4 if (!defined("_ECRIRE_INC_VERSION")) return;
5
6 /**
7 * Un code postal francais est compose de 5 chiffres
8 * http://fr.wikipedia.org/wiki/Code_postal_en_France
9 * a completer pour d'autre pays
10 *
11 * cf : http://fr.wikipedia.org/wiki/Codes_postaux
12 *
13 * La regexp par défaut doit valider toutes les possibilités
14 * -* combinaisons de chiffres et de lettres et aussi tiret
15 * -* notations internationales cf : http://en.wikipedia.org/wiki/List_of_postal_codes#On_the_use_of_country_codes
16 *
17 * @param string $valeur
18 * La valeur à vérifier.
19 * @param array $options
20 * pays => code pays
21 * @return string
22 * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur.
23 */
24 function verifier_code_postal_dist($valeur, $options=array()){
25 $erreur = _T('verifier:erreur_code_postal');
26 if (!is_string($valeur))
27 return $erreur;
28
29 $ok = '';
30 switch ($options['pays']){
31 case 'FR':
32 if (!preg_match(",^((0[1-9])|([1-8][0-9])|(9[0-8]))[0-9]{3}$,", $valeur))
33 return $erreur;
34 break;
35 case 'DZ':// Algérie
36 case 'DE':// Allemagne
37 case 'BY':// Bielorussie
38 case 'BA':// Bosnie Herzégovine
39 case 'HR':// Croatie
40 case 'ES':// Espagne
41 case 'FI':// Finlande
42 case 'GT':// Guatemala
43 case 'IT':// Italie
44 case 'LT':// Lituanie
45 case 'MY':// Malaisie
46 case 'MA':// Maroc
47 case 'MX':// Mexique
48 case 'ME':// Montenegro
49 case 'LK':// Sri lanka
50 case 'MX':// Mexique
51 case 'UA':// Ukraine
52 // 5 chiffres
53 if (!preg_match(",^[0-9]{5}$,", $valeur))
54 return $erreur;
55 break;
56 default:
57 if (!preg_match('/^[A-Z]{1,2}[-|\s][0-9]{3,6}$|^[0-9]{3,6}$|^[0-9|A-Z]{2,5}[-|\s][0-9|A-Z]{2,4}$|^[A-Z]{1,2} [0-9|A-Z]{2,5}[-|\s][0-9|A-Z]{2,4}/i',$valeur))
58 return $erreur;
59 break;
60 }
61
62 return $ok;
63 }