J'ai un problème qui semble simple à première vue mais qui a vaincu mes maigres compétences de regex. J'ai une chaîne que j'ai besoin de convertir en un tableau puis de traiter les valeurs en conséquence, ce qui est assez simple, mais le format de la chaîne ne peut pas être changé (il est généré ailleurs) et sa logique me déroute.Comment diviser une chaîne en tableau 2D avec Regex?
La chaîne est:
[6] [2] [3] 12.00; [5] [4]
Il est essentiellement un ensemble de valeurs décimales et ids (dans ce cas id == 3 12.00). La quantité d'identifiants peut changer à tout moment et les valeurs décimales peuvent figurer dans tout ou partie des identifiants.
Dans un monde idéal, je devrais le tableau suivant:
Array (
[0] => Array (
[id] => 6
[num] =>
)
[1] => Array (
[id] => 2
[num] =>
)
[2] => Array (
[id] => 3
[num] => 12.00
)
Etc...
Est-ce que l'un des assistants vous regex savent comment cela peut être accompli avec moins de jurons que je suis en mesure de réaliser?
J'ai été jusqu'ici en mesure d'extraire les id en utilisant:
preg_match_all('@\[(.*?)\]@s', $string, $array);
et les décimaux à l'aide:
preg_match_all('/([0-9]+[,\.]{1}[0-9]{2})/', $string, $array);
mais perdre la corrélation entre les id et les valeurs.
vous pouvez résoudre ce problème avec exploser et strstr son meilleur que regex en terme de performance. – shox