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);