Ho un testo in questo formato:
"ciao car{{o}{a}} anonimo questo è un messaggio scritto da Pin{ {o} {a} } altro testo...non deve prendere {{o} txt {a}}"
con l'espressione regolare
.
deve uscire fuori un array sequenziale
output:
[0] => 'o' 'a' cioè (preso da car{{o}{a}})
[1] => 'o' 'a' cioè (preso da Pin{ {o} {a} }
il formato da prendere è{{testo anche vuoto}{testo anche vuoto}}oppure con gli spazi { {testo anche vuoto } {testo anche vuoto} }
se trova {{o}{a} {altro} } è errore perché dentro la graffa ci sono altri 3 contenuti.
se trova {{o}prova{a}} è errore perché dentro la graffa in mezzo ci sono altri caratteri (prova)
All'interno delle graffe annidate ci può essere qualunque carattere o testo (anche alfanumerico) l'importante è che rispetti il formato.
allora ho provato a fare cosi:
la sintassi della regex dovrebbe essere correttocodice:$testo = "ciao car{{o}{a}} anonimo questo è un messaggio scritto da Pin{ {o} {a} } altro testo...non deve prendere {{o} txt {a}}"; $regex = "/\[{{^}{^}}]*\]/"; preg_match_all($regex,$testo,$campi); echo $campi; // dà array vuoto
dove sbaglio?codice:$regex = "/\[{{^}{^}}]*\]/"; // cerca '{{' prende tutti i caratteri con ^ chiude graffa '}' '{' idem chiude graffa 1 e 2 }}
grazie in anticipo