CLASS DE VALIDATIONS DE DATE, ENTIER, STRING,...

cs_dorian91 Messages postés 41 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 15 mars 2009 - 16 janv. 2009 à 19:58
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 - 19 janv. 2009 à 15:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48990-class-de-validations-de-date-entier-string

codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
19 janv. 2009 à 15:28
pour que mb fonctionne, il faut que l'extension soit activée. C'est le cas chez toi ?

strlen("ÓÔÕÖØ") retourne 10, c'est normal. Il faut attendre php6 (normallement php 5.3 devrait faire l'affaire) et le support de l'unicode pour que cela soit correctement pris en compte.

C'est une sorte de bug dû aux problèmes dans les divers langages parlés (à cause des accents). Et je te parle pas du japonais ! :p

J'avais un bon lien sur le sujet, mais je ne le retrouve plus :(

L'idée qu'il faut garder en mémoire, c'est que toutes les fonction str* ne fonctionnent pas avec les chaines "exotiques". il faut passer par leur équivalent avec mb_* (si cette extension est activée !)
whiskycoke Messages postés 3 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 19 janvier 2009
19 janv. 2009 à 14:33
j ai modifié :
- le code pour que l email soit vérifié avec la fonction filter_var()
- le contenu de la méthode valid_limit_string en mettant valid_limit_num(strlen($value)...

par contre pour ctype c est un peu basique.
pour les formats de chiffre un peu spéciaux comme 100'000 ou -5 ou +3 ou
pour les formats de string alphanum qui accepte les . ; ' je crois qu'il faut passer par les regular expression.
Je vais surement revoir mon regular expression pour le type "Alphanum" et préciser ce que j autorise plutôt que de préciser ce que je n'autorise pas.

j ai toujours le probleme :
strlen("ÓÔÕÖØ") me retourne 10
mb_strlen ne marche pas chez moi

si quelqu'un a une idée
whiskycoke Messages postés 3 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 19 janvier 2009
19 janv. 2009 à 11:06
merci pour tout vos conseils je met a jour des que possible
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
19 janv. 2009 à 10:06
Pour ma part, j'allais aussi parler de filter_var, mais vu que ca déjà été fait, j'ajouterai l'option "ctype" qui te permette de faire divers tests (très utile aussi quand on récupère des _GET/_POST/...) :

http://fr.php.net/ctype
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
17 janv. 2009 à 17:44
Petite remarque d'optimisation, tes fonctions "valid_limit_num" et "valid_limit_string" font exactement la même chose à l'exception que dans "valid_limit_string" c'est la longueur de la valeur qui est testé. Tu pourrais résumer ta fonction "valid_limit_string" à ceci :

function valid_limit_string ($value,$value_min,$value_min_inclusive,$value_max,$value_max_inclusive) {
return $this->valid_limit_num(strlen($value),$value_min,$value_min_inclusive,$value_max,$value_max_inclusive);
}
whiskycoke Messages postés 3 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 19 janvier 2009
17 janv. 2009 à 17:30
T_T merci pour ta remarque plus que pertinente.
Je vais voir si je peux pas modifier mes classes pour y intégrer la fonction filter
cs_dorian91 Messages postés 41 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 15 mars 2009
16 janv. 2009 à 19:58
Salut
Pour valider des données tu peux utiliser filter_var (http://fr.php.net/manual/fr/book.filter.php)
C'est une fonction native donc plus rapide. Tu as des filtres pour toute sorte de donées (email, int, float; string, ip etc..)
Sinon j'ai pas regardé en profondeur mais c'est propre. Juste manque des commentairses dans tes classes
A+
Rejoignez-nous