StackOverflow не дозволить мені коментувати відповідь гессельбом (недостатньо репутації), тому я додаю свою власну ...
$array = preg_split('/\s*\R\s*/', trim($text), NULL, PREG_SPLIT_NO_EMPTY);
Це найкраще працювало для мене, оскільки воно також автоматично виключає пробіл (другий \ s *) та трейлінг (перший \ s *), а також пропускає порожні рядки (прапор PREG_SPLIT_NO_EMPTY).
- = ВАРІАНТИ = -
Якщо ви хочете зберегти провідний пробіл, просто позбудьтесь другого \ s * і зробіть його замість rtrim () замість ...
$array = preg_split('/\s*\R/', rtrim($text), NULL, PREG_SPLIT_NO_EMPTY);
Якщо вам потрібно зберегти порожні рядки, позбавтесь від NULL (це лише заповнювач) та PREG_SPLIT_NO_EMPTY прапор, як так ...
$array = preg_split('/\s*\R\s*/', trim($text));
Або збереження провідних пробілів та порожніх рядків ...
$array = preg_split('/\s*\R/', rtrim($text));
Я не бачу жодної причини, чому б вам хотілося зберегти пробіли ззаду, тому пропоную залишити перший \ s * там. Але якщо все, що ви хочете, це розділити на новий рядок (як підказує заголовок), це ЦЕ просто (як згадував Ян Гойвартс) ...
$array = preg_split('/\R/', $text);