2011-05-28 7 views
7

PHP - Ho una stringa che ha valori diversi su ogni linea:Come esplodere una stringa multilinea?

$matches="value1 
value2 
value3 
value4 
value5 
"; 

voglio sfruttare l'intera stringa in un array costituito dai valori separeted. So come esplodere una stringa separata dallo spazio, come explode(' ', $matches). Ma come faccio ad usare la funzione explode su questo tipo di stringa?

ho provato questo:

$matches=explode('\n',$matches); 
print_r($matches); 

Ma il risultato è simile:

Array 
(
    [0] => hello 
hello 
hello 
hello 
hello 
hello 
hello 

) 
+1

Quale sistema operativo che si sta utilizzando? OS diversi hanno caratteri di nuova riga diversi: http://en.wikipedia.org/wiki/Newline –

risposta

23

È necessario modificare '\n'-"\n".

Da PHP.net:

Se la stringa è racchiusa in virgolette ("), PHP interpreterà più sequenze di escape per speciali personaggi:

\ n avanzamento riga (LF o 0x0A (10) in ASCII)
More...

+0

accetterà la risposta in 10 minuti. Grazie. –

5

Leggi

Nota: A differenza delle sintassi virgolette doppie e heredoc, variabili e fuga sequenze per i caratteri speciali saranno non essere espanse quando si verificano in singole stringhe tra virgolette.

in modo da utilizzare "\ n" invece di '\ n'

Inoltre, invece di \n è possibile utilizzare PHP_EOL costante.
In Windows "\ r \ n" può essere utilizzato come fine linea, per questo caso è possibile effettuare doppia sostituzione:
$matches=explode("\n", str_replace("\r","\n",$matches));