StackOverflowはヘッセルボムの答えにコメントすることを許可しない(十分な評判ではない)ので、私は自分の答えを追加しています...
$array = preg_split('/\s*\R\s*/', trim($text), NULL, PREG_SPLIT_NO_EMPTY);
これは、先頭(2番目の\ s *)と末尾(最初の\ s *)の空白を自動的に削除し、空白行をスキップする(PREG_SPLIT_NO_EMPTYフラグ)ため、私にとって最も効果的でした。
-=オプション=-
先頭の空白を保持したい場合は、2番目の\ 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 *をそこに残すことをお勧めします。しかし、もしあなたが望むすべてが(タイトルが示唆するように)新しい行で分割することであるなら、これは簡単です(Jan Goyvaertsが述べたように)...
$array = preg_split('/\R/', $text);