StackOverflow不允许我对hesselbom的答案发表评论(信誉欠佳),所以我要添加自己的答案...
$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 *。但是,如果您想要的只是换行(如标题所示),则这很简单(如Jan Goyvaerts所述)...
$array = preg_split('/\R/', $text);