StackOverflow não permitirá que eu comente a resposta de hesselbom (reputação insuficiente), por isso estou adicionando a minha ...
$array = preg_split('/\s*\R\s*/', trim($text), NULL, PREG_SPLIT_NO_EMPTY);
Isso funcionou melhor para mim porque também elimina os espaços em branco à esquerda (segundo \ s *) e à direita (primeiro \ s *) automaticamente e também ignora as linhas em branco (o sinalizador PREG_SPLIT_NO_EMPTY).
- = OPÇÕES = -
Se você deseja manter o espaço em branco à esquerda, basta se livrar do segundo \ s * e transformá-lo em um rtrim () ...
$array = preg_split('/\s*\R/', rtrim($text), NULL, PREG_SPLIT_NO_EMPTY);
Se você precisar manter linhas vazias, livre-se do sinalizador NULL (é apenas um espaço reservado) e PREG_SPLIT_NO_EMPTY, assim ...
$array = preg_split('/\s*\R\s*/', trim($text));
Ou mantendo os espaços em branco à esquerda e as linhas vazias ...
$array = preg_split('/\s*\R/', rtrim($text));
Não vejo nenhuma razão para que você queira continuar em branco, então sugiro deixar o primeiro \ s * lá. Mas, se tudo o que você deseja é dividir por nova linha (como o título sugere), é ESTE simples (como mencionado por Jan Goyvaerts) ...
$array = preg_split('/\R/', $text);