From 1cb69dcc3216e39e014be255a31fdc0ee2d5a456 Mon Sep 17 00:00:00 2001
From: "xdjuj@apsulis.com" <>
Date: Wed, 6 Jan 2010 20:03:51 +0000
Subject: [PATCH] =?UTF-8?q?-=20Plus=20tol=C3=A9rant=20sur=20les=20s=C3=A9p?=
 =?UTF-8?q?arateurs=20de=20dates=20-=20Longueur=20de=20chaine=20EGALE=20?=
 =?UTF-8?q?=C3=A0=20une=20valeur?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 lang/verifier_fr.php | 1 +
 test/verifier.html   | 4 ++++
 verifier/date.php    | 8 +++++---
 verifier/taille.php  | 5 +++++
 4 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/lang/verifier_fr.php b/lang/verifier_fr.php
index 23add65..c69372a 100644
--- a/lang/verifier_fr.php
+++ b/lang/verifier_fr.php
@@ -16,6 +16,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 'erreur_siren' => 'Le num&eacute;ro de SIREN n\'est pas valide.',
 'erreur_siret' => 'Le num&eacute;ro de SIRET n\'est pas valide.',
 'erreur_taille_entre' => 'La valeur doit comprendre entre @min@ et @max@ caract&egrave;res.',
+'erreur_taille_egal' => 'La valeur doit comprendre exactement @egal@ caract&egrave;res.',
 'erreur_taille_max' => 'La valeur doit comprendre au maximum @max@ caract&egrave;res.',
 'erreur_taille_min' => 'La valeur doit comprendre au minimum @min@ caract&egrave;res.',
 'erreur_telephone' => "Le numéro n'est pas valide.",
diff --git a/test/verifier.html b/test/verifier.html
index 5d185a9..0bc08b2 100644
--- a/test/verifier.html
+++ b/test/verifier.html
@@ -59,6 +59,10 @@ echo "$un_autre_chaine 5 caractères max ?";
 var_dump(verifier($un_autre_chaine, 'taille', array('max'=>5)));
 echo "$un_autre_chaine 4 caractères mini ?";
 var_dump(verifier($un_autre_chaine, 'taille', array('min'=>4)));
+echo "$une_chaine de 3 caractères ?";
+var_dump(verifier($une_chaine, 'taille', array('egal'=>3)));
+echo "$un_autre_chaine de 3 caractères ?";
+var_dump(verifier($un_autre_chaine, 'taille', array('egal'=>3)));
 
 ?>
 </pre>
diff --git a/verifier/date.php b/verifier/date.php
index ae9901f..10a9326 100644
--- a/verifier/date.php
+++ b/verifier/date.php
@@ -4,7 +4,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 /**
- * Une date au format JJ/MM/AAAA
+ * Une date au format JJ/MM/AAAA (avec séparateurs souples : espace / - .)
  * TODO : introduire via les options le FORMAT de la date, pour accepter différentes écritures
  * On pourrait faire mieux, genre vérifier les jours en fonction du mois
  * Mais c'est pas très important, on reste simple
@@ -13,11 +13,13 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 function verifier_date_dist($valeur, $options=array()){
 	$erreur = _T('verifier:erreur_date');
 	$ok = '';
+	// On tolère différents séparateurs
+	$valeur = ereg_replace("\.|/| ",'-',$valeur);
 	
 	// On vérifie la validité du format
-	if(!preg_match('#^[0-9]{2}/[0-9]{2}/[0-9]{4}$#',$valeur)) return $erreur;
+	if(!preg_match('#^[0-9]{2}-[0-9]{2}-[0-9]{4}$#',$valeur)) return $erreur;
 	// On vérifie vite fait que les dates existent, genre le 32 pour un jour NON, (mais on pourrait aller plus loin et vérifier en fonction du mois)
-	list($jour,$mois,$annee) = explode('/',$valeur);
+	list($jour,$mois,$annee) = explode('-',$valeur);
 	if(($jour > 31)|| ($jour < 1) || ($mois > 12) || ($mois < 1) || ($annee < 1800)) return $erreur; // 1800, je crois qu'avant les gens ne sont plus vivants °_°
 	
 	return $ok;
diff --git a/verifier/taille.php b/verifier/taille.php
index 95e7a85..6bbb5d1 100644
--- a/verifier/taille.php
+++ b/verifier/taille.php
@@ -17,12 +17,17 @@ function verifier_taille_dist($valeur, $options=array()){
 	if (isset($options['max'])){
 		$ok = ($ok and (strlen($valeur) <= $options['max']));
 	}
+	if (isset($options['egal'])){
+		$ok = ($ok and (strlen($valeur) == $options['egal']));
+	}
 	
 	if (!$ok){
 		if (isset($options['min']) and isset($options['max']))
 			$erreur = _T('verifier:erreur_taille_entre', $options);
 		elseif (isset($options['max']))
 			$erreur = _T('verifier:erreur_taille_max', $options);
+		elseif (isset($options['egal']))
+			$erreur = _T('verifier:erreur_taille_egal', $options);
 		else
 			$erreur = _T('verifier:erreur_taille_min', $options);
 	}
-- 
GitLab