2012-02-20 10 views
5

Ho una textarea che contiene numeri di telefono, ogni numero in una riga separata. Voglio esplodere che stringa in un array utilizzandoPHP: Esplode righe textarea come elemento di array separato

explode("\n", $numbers); 

o

explode("\r\n", $numbers); 

Questo non funziona. Mi aiuti per favore. Grazie!

+3

Se sei così intelligente, mi dica, cosa c'è di sbagliato qui? –

+1

Intendevi scrivere 'explode (" \ n ", $ numeri);' oppure 'explode (" \ r \ n ", $ numeri);'? O stai effettivamente scrivendo entrambe le dichiarazioni una accanto all'altra come una singola riga come quella? –

+0

Dovresti pubblicare un po 'più di codice, il modulo HTML e un po' più di codice circostante. – h00ligan

risposta

6

$records = preg_split('/[\r\n]+/', $mystring, -1, PREG_SPLIT_NO_EMPTY);

Questo dovrebbe farlo.

6

Come gli stati manual: Restituisce una matrice di stringhe.

Quindi dovrai archiviare il risultato. Anche lo or non funzionerà in questo modo. Se non si sa se l'input conterrà \n o \r\n, si potrebbe fare una sostituzione per sostituire \r con una stringa vuota, quindi esplodere su \n.

Questo dovrebbe fare il trucco:

$numbers = explode("\n", str_replace("\r", "", $numbers)); 
+1

hai ragione, certo. I dati inviati dall'utente potrebbero non essere tradotti nel sistema EOL. commento ritirato. –

1

Utilizzare questa

<?php 

$input = $_POST['textarea_name']; 
$new_array = array_values(array_filter(explode(PHP_EOL, $input))); 

// explode -> convert textarea to php array (that lines split by new line) 
// array_filter -> remove empty lines from array 
// array_values -> reset keys of array 

?>