StackOverflow ne me permettra pas de commenter la réponse de hesselbom (pas assez de réputation), donc j'ajoute la mienne ...
$array = preg_split('/\s*\R\s*/', trim($text), NULL, PREG_SPLIT_NO_EMPTY);
Cela a fonctionné le mieux pour moi car il élimine également automatiquement les espaces de début (deuxième \ s *) et de fin (premier \ s *) et ignore également les lignes vides (l'indicateur PREG_SPLIT_NO_EMPTY).
- = OPTIONS = -
Si vous voulez garder les espaces blancs en tête, débarrassez-vous simplement du second \ s * et faites-en plutôt un rtrim () ...
$array = preg_split('/\s*\R/', rtrim($text), NULL, PREG_SPLIT_NO_EMPTY);
Si vous devez conserver des lignes vides, débarrassez-vous du drapeau NULL (ce n'est qu'un espace réservé) et PREG_SPLIT_NO_EMPTY, comme ça ...
$array = preg_split('/\s*\R\s*/', trim($text));
Ou en gardant à la fois les espaces blancs et les lignes vides ...
$array = preg_split('/\s*\R/', rtrim($text));
Je ne vois aucune raison pour laquelle vous voudriez toujours garder un espace blanc, donc je suggère de laisser le premier \ s * là-dedans. Mais, si tout ce que vous voulez est de diviser par nouvelle ligne (comme le titre le suggère), c'est CECI simple (comme mentionné par Jan Goyvaerts) ...
$array = preg_split('/\R/', $text);