StackOverflow nie pozwoli mi skomentować odpowiedzi hesselbom (niewystarczająca reputacja), więc dodaję własną ...
$array = preg_split('/\s*\R\s*/', trim($text), NULL, PREG_SPLIT_NO_EMPTY);
Działa to dla mnie najlepiej, ponieważ automatycznie eliminuje początkowe (drugie \ s *) i końcowe (pierwsze \ s *) białe znaki, a także pomija puste linie (flaga PREG_SPLIT_NO_EMPTY).
- = OPCJE = -
Jeśli chcesz zachować wiodące białe znaki, po prostu pozbądź się sekund \ s * i zamiast tego ustaw rtrim () ...
$array = preg_split('/\s*\R/', rtrim($text), NULL, PREG_SPLIT_NO_EMPTY);
Jeśli chcesz zachować puste wiersze, pozbądź się NULL (to tylko symbol zastępczy) i flagi PREG_SPLIT_NO_EMPTY, tak jak ...
$array = preg_split('/\s*\R\s*/', trim($text));
Lub utrzymywanie zarówno wiodących białych znaków, jak i pustych linii ...
$array = preg_split('/\s*\R/', rtrim($text));
Nie widzę żadnego powodu, dla którego chciałbyś kiedykolwiek pozostawić końcowe białe znaki, więc sugeruję pozostawienie tam pierwszych znaków. Ale jeśli wszystko, czego chcesz, to podział według nowej linii (jak sugeruje tytuł), jest TO TAKIE proste (jak wspomniał Jan Goyvaerts) ...
$array = preg_split('/\R/', $text);