Ciao a tutti,
ho cominciato da poco a usare le espressioni regolari in PHP.
Il mio problema è il seguente: supponiamo (in realtà è più complesso quello che faccio, ma il punto è lo stesso) che voglia trasformare la stringa
primo [secondo] terzo [quarto] quinto [sesto] settimo
sostituendo tutto il contenuto delle graffe con il testo "X", quindi
primo [X] terzo [X] quinto [X] settimo
Ho scritto questo codice:
Codice PHP:
eregi_replace('\\[(.+)\\]', '[X]', "primo [secondo] terzo [quarto] quinto [sesto] settimo");
L'espressione regolare dice: aperta parentesi quadra (con escape), poi ogni carattere una o più volte, poi chiusa quadra.
Ma in output da questo
primo [X] settimo
perchè (credo) considera la stringa trovata dalla prima quadra aperta all'ultima chiusa, quindi considerando come "ogni carattere una o più volte" anche le quadre tra la prima e l'ultima.
Come risolvo? Come faccio a dirgli "ogni carattere una o più volte TRANNE la quadra chiusa, tra le quadre"?
Ho provato con l'espressione '\[([^\]]+)\]' ma non funziona (in pratica tra le parentesi tonde c'è una classe di caratteri che esclude la quadra chiusa, con escape: [^\]] )!!! Come faccio?