I want to parser and get a two-dimensional matrix using regular expresions of PHP. But I really don't know to parser and get a array(unidimensional). For example, I have this string:
$str = {a}&{b}&{c}&{d&};
and I want to convert to array like this:
array( 'a', 'b', 'c', 'd&' )
The pattern should be this:
$pattern = '#(({[^}]+})(?:&(?1))*#';
The pattern matches correctly but I can't get all elements with $matches parameter:
preg_match_all( $pattern, $str, $matches );
print_r( $matches );
Output:
Array
(
[0] => Array
(
[0] => {a}&{b}&{c}&{d&}
)
[1] => Array
(
[0] => a
)
)
I try to solve this problem involving the recursive pattern with parentheses.
$pattern = '#(({[^}]+})(?:&((?1)))*#';
Output:
Array
(
[0] => Array
(
[0] => {a}&{b}&{c}&{d&}
)
[1] => Array
(
[0] => a
)
[2] => Array
(
[0] => d&
)
)
Only is gotten the last element of array. The option flags PREG_PATTERN_ORDER or con PREG_SET_ORDER haven't solved my problem.
Is there any way to get the array of elements?
Greetings and thanks!