fonction qui n'accepte que certains caracteres dans une chaine

fonction qui n'accepte que certains caracteres dans une chaine - PHP - Programmation

Marsh Posté le 05-10-2006 à 12:24:25    

Bonjour à tous,
Voila tout est dans le titre:
Je cherche une fonction PHP dans ce style:
ma_fonction($chaine,"1234567890!c*-" )
Si dans la variable $chaine, on trouve autre chose que les caracteres suivants, en paramètre (1234567890!c*-) alors elle renvoie false, sinon, true.
 
Si cette fonction existe déjà, ou que quelqu'un l'à programmé pourriez vous me la donner, ou m'indiquer a peut pres de quelle maniere la programmer efficacement ?
merci

Reply

Marsh Posté le 05-10-2006 à 12:24:25   

Reply

Marsh Posté le 05-10-2006 à 13:47:02    

avec un petit coup de regex(preg_match), c'est pas bien dur!!!
Mais si tu veux vraiment en faire une fonction spécifique, tu peux faire un truc dans le genre:

Code :
  1. <?php
  2. function addRegexSlashes($str){
  3.   return addcslashes($str, '[]{}/\.*?+-|$^()');
  4. }
  5. function ma_fonction($str, $chars){
  6.   return (preg_match( '/'.implode('|', array_map("addRegexSlashes", str_split($chars))).'/', $str)==0)?true:false;
  7. }
  8. if ( ma_fonction('a.bcd', '.*\12340590')){
  9.   print 'OK';
  10. } else {
  11.   print 'PAS OK';
  12. }
  13. ?>

Reply

Marsh Posté le 05-10-2006 à 16:35:55    

hello
merci de ta réponse,
j'ai fais une recherche sur preg_match,et c'est en effet bien la fonction qui correspond a mon probleme.
le probleme c'est que je ne comprend pas vraiment la syntaxe des regex, je vais étudier ca.
ca a l'air pas mal comme systeme pour tester les chaines de caractere.

Reply

Marsh Posté le 05-10-2006 à 16:47:31    

ca a l'air fichtrement compliqué.

Reply

Marsh Posté le 05-10-2006 à 19:04:57    

edit:
j'ai trouvé une fonction qui fait tout ca de maniere simple:
 
strspn($chaine_a_verifier, $chaine_valide);
 
elle permet de savoir si $chaine_a_verifier contient bien les caracteres de $chaine_valide et RIEN d'autre. (si elle trouve un caractere intru, elle renvoie 0)

Reply

Marsh Posté le 06-10-2006 à 09:42:37    

pas du tout hein [:mlc] [:mlc] [:mlc]
http://fr.php.net/strspn :

Citation :

Exemple 1. Exemple avec strspn()

Code :
  1. <?php
  2. echo strspn("42 est la réponse, mais quelle est la question ...", "1234567890" );
  3. ?>


va afficher 3, car la chaîne "42" est le plus long segment initial de "42 est la réponse, mais quelle est la question ...", dont tous les caractères sont contenus dans "1234567890".

Reply

Marsh Posté le 10-10-2006 à 10:46:53    

edit.
je ne comprend pas pourquoi cette fonction renvoie 3 au lieu de 2, dans l'exemple.
 
"42" fait bien 2 caracteres de longueur ?
 
edit:
apres vérification, il y a bien une erreur dans l'exemple. elle renvoie 2.
 
edit:
en fait, il suffit de comparer le résultat de cette fonction avec la longueur de la chaine, et si c est différent, c est qu'il y a au moins 1 caractere "intrus", c est ce qui m'intéressait.


Message édité par deltree le 10-10-2006 à 11:04:17
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed