2012-02-20 8 views
5

Mam obszar tekstowy zawierający numery telefonów, każdy numer w oddzielnym wierszu. Chcę eksplodować ten ciąg do tablicy przy użyciuPHP: Rozbij linie tekstu w oddzielnym elemencie tablicy

explode("\n", $numbers); 

lub

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

To nie działa. Proszę pomóż mi. Dzięki!

+3

Jeśli jesteś taki mądry, powiedz mi, co tu jest nie tak? –

+1

Czy chciałeś napisać 'explode (" \ n ", $ numbers);' lub 'explode (" \ r \ n ", $ numbers);'? Czy rzeczywiście piszesz obie te zdania tuż obok siebie jako pojedynczą linię? –

+0

Powinieneś opublikować nieco więcej kodu, formularza HTML, a także trochę więcej kodu otaczającego. – h00ligan

Odpowiedz

6

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

To powinno wystarczyć.

6

Jako manual stwierdza: Zwraca tablicę ciągów znaków.

Musisz więc zapisać wynik. or również nie będzie działać w ten sposób. Jeśli nie wiesz, czy dane wejściowe będą zawierały \n lub \r\n, możesz zastąpić, aby zastąpić \r pusty ciąg, a następnie rozbić na \n.

To powinno załatwić sprawę:

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

masz rację, oczywiście. Dane przesłane przez użytkownika nie mogą być tłumaczone na systemowy EOL. komentarz został wycofany. –

1

Używaj tego

<?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 

?>