Séparer les valeurs numériques des chaines de caractéres

Eléphanteau du PHP | 14 Messages

12 oct. 2010, 15:49

Bonjour !
Je me suis rendu compte d'une difficulté quand il a fallu que je sépare les valeurs numériques des chaines de caractères dans une chaine de caractère.
Exemple : 11testORL20101012testCODE
je veux : tab[0]=11, tab[1]=testORL , tab[2]=20101012, tab[3]=testCODE , facile ! mais là je vois pas trop qu'elle direction prendre j'aimerais un explode(numeric) voyez ?

J'espère avoir été clair , merci pour la lecture.
Modifié en dernier par su4p le 12 oct. 2010, 16:52, modifié 2 fois.

ViPHP
ViPHP | 5462 Messages

12 oct. 2010, 15:55

hello, tu peux t'orienter vers les regexp

Eléphanteau du PHP | 14 Messages

12 oct. 2010, 16:20

Ben bof si je fais :

preg_match('#[:alpha:]#', $txt, $out)

je vais me retrouver avec testORLtestCODE comment je sépare les 2 après ?

ViPHP
ViPHP | 5462 Messages

12 oct. 2010, 16:22

normale ton regexp correspond pas a la chaine

Eléphanteau du PHP | 14 Messages

12 oct. 2010, 16:25

#-o et donc :?:

ViPHP
ViPHP | 5462 Messages

12 oct. 2010, 16:30

#-o et donc :?:
bah fait le bon regexp ca marchera...

Eléphanteau du PHP | 14 Messages

12 oct. 2010, 16:35

Je suis pas non plus super au point au niveau des expressions régulières néanmoins je sais que : [:alpha:] -> tout caractère alphabétique [a-zA-Z] plus accentués.

ViPHP
ViPHP | 5462 Messages

12 oct. 2010, 16:42

Je suis pas non plus super au point au niveau des expressions régulières néanmoins je sais que : [:alpha:] -> tout caractère alphabétique [a-zA-Z] plus accentués.
$str = '11testORL20101012testCODE';
preg_match('/^([0-9]+)([a-zA-Z]+)([0-9]+)([a-zA-Z]+)$/u', $str, $matches);
print_r($matches);

Eléphanteau du PHP | 14 Messages

12 oct. 2010, 16:50

Ha ben oui ça marche j'aurais préféré une explication des details plus avancée mais bon ça me va aussi merci beaucoup.

ViPHP
ViPHP | 5462 Messages

12 oct. 2010, 16:59

Ha ben oui ça marche j'aurais préféré une explication des details plus avancée mais bon ça me va aussi merci beaucoup.
c'est du basic

^([0-9]+)([a-zA-Z]+)([0-9]+)([a-zA-Z]+)$
^           : debut de la chaine
([0-9]+)    : 1er groupe  : 1 ou plusieurs chiffre
([a-zA-Z]+) : 2eme groupe : 1 ou plusieurs lettre
([0-9]+)    : 3eme groupe : 1 ou plusieurs chiffre
([a-zA-Z]+) : 4eme groupe : 1 ou plusieurs lettre
$           : fin de la chaine
option u, c'est pour l'UTF-8 :wink:

Eléphanteau du PHP | 14 Messages

12 oct. 2010, 17:06

Parfait, je vois exactement maintenant.
Malheureusement les expressions régulières n'étaient pas au programme de mon BTS, pourtant utiles.
Merci de combler mes lacunes :wink: .

ViPHP
ViPHP | 5462 Messages

12 oct. 2010, 17:09

Parfait, je vois exactement maintenant.
Malheureusement les expressions régulières n'étaient pas au programme de mon BTS, pourtant utiles.
Merci de combler mes lacunes :wink: .
sans regexp, on pourrait avec un substr, mais si le type de donnée change c'est foutu