Besoin d'aide pour une regexp - PHP

Résolu/Fermé
niahoo Messages postés 247 Date d'inscription lundi 24 décembre 2007 Statut Membre Dernière intervention 23 mai 2010 - 20 nov. 2009 à 01:26
niahoo Messages postés 247 Date d'inscription lundi 24 décembre 2007 Statut Membre Dernière intervention 23 mai 2010 - 20 nov. 2009 à 01:46
Bonjour,

actuellement j'essaie de developper un mini moteur de templates en php.. rien de tres passionnant mais je bloque sur quelquechose :

voilà ce que je dois récupérer dans mes fichiers de template :

{AAA.bbb.CcC.DDD}


grâce à cette fonction :

 elseif(preg_match( "#\{([a-zA-Z]+)(\.[a-zA-Z]+)*\}#", $ligneTexte, $matches )) {


et enfin voilà le contenu du tableau $matches :

Array
(
    [0] => {AAA.bbb.CcC.DDD}
    [1] => AAA
    [2] => .DDD
)


Mon problème est que je voudrais bien récuperer .bbb et .CcC également, et de préférence sans les ".".

et si ma regexp est simplement

"#\{([a-zA-Z\.]+)\}#"


ça ne foncitonnera pas car je peux avoir plusieurs données du type {xxxx} dans $ligneTexte, ce qui me fait récupérer un truc du genre :
Array
(
    [0] => {AAA.bbb.CcC.DDD} bla bla bla bla bla bla {qzdqd.qzdqzd}
    ....
)


Donc, je sais que je peux recuperer $matches[0] pour le refaire passer dans une regexp pour virer les accolades et ensuite faire mon explode, etc.. (y a d'autres solutions de ce type que j'ai trouvées, mais j'aimerais que vous puissiez m'aider à la place à trouver la regexp qui me mettra dans $matches tous les éléments de mes codes entre accolades.

Et sinon, en remplacement, me permettre de récupérer le contenu d'accolades entier mais seulement cela et non pas la ligne complète entre plusieurs contenus d'accolades comme dans mon dernier code ci-dessus, et je me débrouillerai avec des explode. (et aussi pour récuperer les differentes occurences avec une autre fonciton que preg match il me semble)à

merci beaucoup
A voir également:

1 réponse

niahoo Messages postés 247 Date d'inscription lundi 24 décembre 2007 Statut Membre Dernière intervention 23 mai 2010 19
20 nov. 2009 à 01:46
bon.. j'ai pu me trouver un élement de reponse:

avec:
<li><a href="javascript:ajax('selmot', {ROW.motID.ccc.DdD}, \'recherches\')">{ROWZZ}</a></li>


cette regexp:
 elseif(preg_match_all( "#\{([a-zA-Z\.]+)\}#", $tmpArray[$i], $matches )) {


donne:
Array
(
    [0] => Array
        (
            [0] => {ROW.motID.ccc.DdD}
            [1] => {ROWZZ}
        )

    [1] => Array
        (
            [0] => ROW.motID.ccc.DdD
            [1] => ROWZZ
        )

)


j'ai donc dans Array[1] mes differentes expressions à explode

je met en resolu alors
0