Ragazzi ammetto di non essere molto pratico di espressioni regolari, però sto sbattendo la testa dietro una espressione che mi deve permettere il parsing di un costrutto "if/elseif/else".
Il costrutto è del tipo:
Codice PHP:
<if expr="...">
// qualcosa
<elseif expr="...">
// qualche altra cosa
<elseif expr="...">
// qualche altra cosa ancora
<else>
// questo
</if>
l'espressione, molto rozza, che ho scritto al momento è:
Codice PHP:
preg_match_all("#<if expr=\"(.*)\">(.*)(<elseif expr=\"(.*)\">(.*))*(<else>(.*))?</if>#siU", $text, $matches, PREG_SET_ORDER);
che ovviamente non integra alcune cose ma al momento visto che non funziona come dovrebbe non mi interessano. Ecco il problema è che non mi becca tutti e due gli "elseif" ma solo il secondo.
Il costrutto if può avere più "elseif" ma un solo "else", ovviamente può anche non averli proprio.
Mi aiutate?