Tengo un problema que parece simple a primera vista, pero que ha derrotado mis escasas habilidades en expresiones regulares. Tengo una cadena que necesito convertir a una matriz y luego procesar los valores en consecuencia, lo cual es bastante simple, pero el formato de la cadena no se puede cambiar (se genera en otro lugar) y su lógica me tiene desconcertado.Cómo dividir una cadena en una matriz 2D con Regex?
La cadena es:
[6] [2] [3] 12.00; [5] [4]
Se trata básicamente de un conjunto de identificadores y valores decimales (en este caso 3 Identificación del == 12.00). La cantidad de identificadores podría cambiar en cualquier momento y los valores decimales podrían estar en alguno o todos los ID.
En un mundo ideal tendría la siguiente matriz:
Array (
[0] => Array (
[id] => 6
[num] =>
)
[1] => Array (
[id] => 2
[num] =>
)
[2] => Array (
[id] => 3
[num] => 12.00
)
Etc...
¿Alguno de ustedes asistentes de expresiones regulares saben cómo esto se puede lograr con menos de juramento lo que he sido capaz de lograr?
hasta ahora he sido capaz de extraer los identificadores utilizando:
preg_match_all('@\[(.*?)\]@s', $string, $array);
y los decimales usando:
preg_match_all('/([0-9]+[,\.]{1}[0-9]{2})/', $string, $array);
pero pierden la correlación entre los valores de y de identificación.
puede resolver este problema y explotar strstr es mejor que la expresión regular en términos de rendimiento. – shox