Newsgroup: it.comp.www.php
Titolo: Aiuto con una espressione regolare

Le espressioni regolari non sono il mio forte, vi chiedo quindi un
piccolo aiuto.
Vorrei che una string del genere ' +parola1 -parola2 "tante parole" ',
venga inserita in un array in questa maniera:
in posizione
0 -> +
1-> parola1
2-> -
3-> parola2
4-> " ( le virgolette di "tante parole" )
5-> tante parole
Mi aiutate a fare questo?
grazie anticipatamente per le vostre risposte

 venga inserita in un array in questa maniera:
[..]
http://php.net/split
-- 
www.iuz-lab.info

 
http://php.net/split
grazie per la risposta, ma non sono riuscito ad ottenere il risultato
voluto...
con
---------------------------------------------------------------------------------------------------------
$strRicerca = '+parola1 -parola2 "tante parole"';
$ar = split('[+-\"]', $strRicerca);
---------------------------------------------------------------------------------------------------------
ottengo questo:
1 ->
2 -> acciao
3 -> zincato
4 -> funi acciao
5 ->
io invece vorrei questo:
1 ->+
2 -> parola1
3 -> -
4 ->parola2
5 ->"
6-> tante parole

[ Nicola ] ha scritto:

uffa non riesco a capire come farlo con una espressione regolare (non
sono il mio forte)...
mi sa che devo scrivere a mano il codice per ottenere il risultato
voluto...

 voluto...
le regex non sono troppo naturali per la maggior parte delle persone.. 
dovrai solo farci l'abitudine..
preg_split('/(\+)|(\-)|(")/', $strRicerca, -1, 
            PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
dovrebbe funzionare ma e' migliorabile..
-- 
www.iuz-lab.info

 dovrebbe funzionare ma e' migliorabile..
grazie mille funziona...
ti chiedo, se è possibile, di farmi delle picole modifiche :).
Mi sono dimenticato di inserire nell'esempio un caso...
1 e 2) Modifica:
$strRicerca = '+acciao -zincato "funi acciao"';
preg_split('/(\+)|(\-)|(")/', $strRicerca, -1,
             PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
il risultato è
0 -> +
1 -> acciao
2 -> -
3 -> zincato
4 -> "
5 -> funi acciao
6 -> "
Vorrei che +, - ed " fossero racchiuse tra parentesi quadre, quindi
vorrei ottenere questo [+], [-] e ["].
Poi quando una frase è racchiusa tra ", preferirei che comparisse sola
prima " e poi la frase.
In poche parole con le due modifiche il risultato deve essere questo:
0 -> [+]
1 -> acciao
2 -> [-]
3 -> zincato
4 -> ["]
5 -> funi acciao
-------------------------------------MODIFICA PIU'
IMPORTANTE----------------------------------------------------
3) Modifica
se invece ho questo
$strRicerca = '+acciao -zincato "funi acciao" resina vetro';
dove ci sono due parole precedute solo da uno spazio senza +, - o ".
Vorrei ottenere il seguente risultato:
0 -> [+]
1 -> acciao
2 -> [-]
3 -> zincato
4 -> ["]
5 -> funi acciao
6 -> [NaP]
7 -> resina
8 ->[NaP]
9 -> vetro
vorrei fare precedere le parole senza +,- ed " dalla scritta [NaP].
Attualmente con quella espressione regolare che mi hai dato ootengo
invece questo risultato:
0 -> +
1 -> acciao
2 -> -
3 -> zincato
4 -> "
5 -> funi acciao
6 -> "
7 -> resina vetro
--------------------------------------------------------------------------------------------------------------------------------------
Ti ringrazio nuovamente per avermi risposto...
se potessi aiutarmi di nuovo te ne sarei davvero molto grato.

UP :(