Hello
j'essaie d'écrire un parser qui dans un fichier texte doit traiter tout les éléments entre {: et :} d'une façon particulière.
J'essaie donc dans mon texte de récupérer tout ce qui précèdre {: et ce qui est compris entre {: et :}
123 {:exemple:} 456 => j'aimerais en retirer au final 123 + exemple + 456.
mon code :
Ce qui avec comme texte (variable $template)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $reg = '%(([^\{]|([^\{][^\:])|(\{$))*)((\{\:([^\:]|([^\:][^\}])|(\:$))*\:\})?)%'; //print($reg); preg_match_all($reg, $template, &$matches); print ('<pre>'); foreach ($matches AS $match) { print_r($match); print ("\n"); } print ('</pre>');
m'affiche1 2 3 {:resx:test:test:} 4 5 6 1
Array
(
[0] => 1 2 3 {:resx:test:test:}
[1] => 4 5 6 1
[2] =>
)
Array
(
[0] => 1 2 3
[1] => 4 5 6 1
[2] =>
)
Array
(
[0] =>
[1] => 1
[2] =>
)
Array
(
[0] =>
[1] =>
[2] =>
)
Array
(
[0] =>
[1] =>
[2] =>
)
Array
(
[0] => {:resx:test:test:}
[1] =>
[2] =>
)
Array
(
[0] => {:resx:test:test:}
[1] =>
[2] =>
)
Array
(
[0] => t
[1] =>
[2] =>
)
Array
(
[0] => t:
[1] =>
[2] =>
)
Array
(
[0] =>
[1] =>
[2] =>
)
Comment est-il donc possible que dans un array de match, j'ai des éléments d'index supérieur à 0 (groupes capturés) qui ne fassent même pas partie de l'élément 0 (match total) ?
Pouvez-vous m'aider ?
Partager