2010-09-13 4 views
0

je fignoler sur mon regex mais pour l'instant quelqu'un peut-il aider à cela ...problème regex pour les gammes débutants de nombres

((2,3,4,11,8),(5,44,67,78,32,22,111,234)) 

comme vous pouvez le voir, chaque plage de numéros est séparé par des virgules et, Dans cet exemple, il existe deux plages de nombres.

Dans un scénario en direct, il peut y avoir plusieurs nombres et une poignée de plages. Alors, comment puis-je extraire quelque chose comme ça dans un tableau php imbriqué ou quelque chose de similaire?

Toute aide appréciée

+1

Sont-ils toujours imbriqués à une profondeur de deux? Ainsi, une plage unique d'un nombre serait '((1))' - et trois plages de nombres, chaque trois longues, ressemblerait à '((1,2,3), (4,5,6), (7,8,9))? –

+0

exactement ce que vous voulez obtenir? –

+1

pas avec regex, je dirais – hop

Répondre

3
$input = str_replace(array('(', ')'), array('[', ']'), $input); 
$output = json_decode($input); 

Cela pourrait fonctionner aussi bien

+0

+1 Solution intelligente! –

+2

Doit être '$ input = str_replace (" ("," [", $ input);' et '$ input = str_replace (") ","] ", $ input);' –

+0

tableau stupide "littéraux" dans php – hop

5

Utilisez explode() à bon escient et de le faire comme ceci:

$ranges = '((2,3,4,11,8),(5,44,67,78,32,22,111,234))'; 

//break into groups 
$array = explode('),(', $ranges); 

//trim any parenthesis left and then split by comma , 
foreach($array as &$group) 
    $group = explode(',',trim($group, '()')); 

//display result 
var_dump($array); 

Ce sorties:

array 
    0 => 
    array 
     0 => string '2' (length=1) 
     1 => string '3' (length=1) 
     2 => string '4' (length=1) 
     3 => string '11' (length=2) 
     4 => string '8' (length=1) 
    1 => & 
    array 
     0 => string '5' (length=1) 
     1 => string '44' (length=2) 
     2 => string '67' (length=2) 
     3 => string '78' (length=2) 
     4 => string '32' (length=2) 
     5 => string '22' (length=2) 
     6 => string '111' (length=3) 
     7 => string '234' (length=3) 
Questions connexes