Séparation de caractere alphabetique et numerique dans une chaine

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Séparation de caractere alphabetique et numerique dans une chaine

Re: Séparation de caractere alphabetique et numerique dans une chaine

par topvision » 29 juil. 2015, 09:32

$mat= "AB32";
$str = (preg_match('#^([A-Z]*+)([0-9]*+)$#',$mat,$matches)) ;  
$str = $matches[1];
$str2 = $matches[2];
print_r($str."<br/> ".$str2);
Ca marche
En fait j'avais vu le matches sur la documentation mais je ne comprenais pas son rôle et c'est bien compris maintenant.
Merci pour tout! Que serions nous sans des gens comme vous?

Re: Séparation de caractere alphabetique et numerique dans une chaine

par @rthur » 29 juil. 2015, 09:02

C'est normal, cf la doc de preg_match() :
Valeurs de retour
preg_match() retourne 1 si le pattern fourni correspond, 0 s'il ne correspond pas, ou FALSE si une erreur survient.
Pour récupérer les valeurs capturées, il faut que tu passes un 3ème paramètre à ta fonction qui va te renvoyer les données dans un tableau. Regarde les exemples de la doc, c'est ce qui fait avec la variable $matches

Re: Séparation de caractere alphabetique et numerique dans une chaine

par topvision » 29 juil. 2015, 08:53

j'ai essayer mais il m'affiche 1 alors que je veux récupérer comme deux variables séparément de tel sorte que ;
$str = AB 
$str2 = 123

Re: Séparation de caractere alphabetique et numerique dans une chaine

par @rthur » 29 juil. 2015, 08:23

Bonjour,

Si ton format est toujours de la forme [LETTRES][CHIFFRES], alors voila un exemple de regex applicable :

Code : Tout sélectionner

^([A-Z]*)([0-9]*)$
Un conseil : il existe un super outil pour tester et réaliser ses regex, c'est regex101 : https://regex101.com/r/zC0wQ7/2

Séparation de caractere alphabetique et numerique dans une chaine

par topvision » 29 juil. 2015, 05:20

Bonjour
je voudrai séparer les caractères alphabétiques d'une part et numériques d'autres part d'un mot provenant d'un POST qui sont de type:
AB1 ou AB12 ou ABC1 ou ABC123 donc variable des lettres 2 a 3 puis 1 à 4 chiffres
avec substr il faut connaitre la position des caractères à l'avance ce qui n'est pas le cas ici.
Apres quelques recherche sur les regex j'ai fais ca
$mat= "AB123";
$str = (preg_match('#^([0-9]+)([0-9]+)$#',$mat)) ;
$str2 = (preg_match('#^([AZ]+)([Az]+)$#',$mat)) ;
print_r($str);
print_r($str2);
il m'affiche des 00