StackOverflow no me permitirá comentar la respuesta de hesselbom (no hay suficiente reputación), así que estoy agregando la mía ...
$array = preg_split('/\s*\R\s*/', trim($text), NULL, PREG_SPLIT_NO_EMPTY);
Esto funcionó mejor para mí porque también elimina el espacio en blanco inicial (segundo \ s *) y posterior (primero \ s *) automáticamente y también omite las líneas en blanco (el indicador PREG_SPLIT_NO_EMPTY).
- = OPCIONES = -
Si desea mantener el espacio en blanco inicial, simplemente elimine el segundo \ s * y conviértalo en un rtrim () en su lugar ...
$array = preg_split('/\s*\R/', rtrim($text), NULL, PREG_SPLIT_NO_EMPTY);
Si necesita mantener líneas vacías, elimine el NULL (es solo un marcador de posición) y el marcador PREG_SPLIT_NO_EMPTY, así ...
$array = preg_split('/\s*\R\s*/', trim($text));
O mantener tanto los espacios en blanco iniciales como las líneas vacías ...
$array = preg_split('/\s*\R/', rtrim($text));
No veo ninguna razón por la que quieras seguir dejando espacios en blanco, así que sugiero dejar el primer \ s * allí. Pero, si todo lo que quieres es dividir por una nueva línea (como sugiere el título), es ESTE simple (como lo menciona Jan Goyvaerts) ...
$array = preg_split('/\R/', $text);