StackOverflow จะไม่อนุญาตให้ฉันแสดงความคิดเห็นกับคำตอบของ hesselbom (ชื่อเสียงไม่เพียงพอ) ดังนั้นฉันจึงเพิ่มของฉันเอง ...
$array = preg_split('/\s*\R\s*/', trim($text), NULL, PREG_SPLIT_NO_EMPTY);
สิ่งนี้ทำงานได้ดีที่สุดสำหรับฉันเพราะมันช่วยกำจัดช่องว่าง (วินาที \ s *) และท้ายหน้า (แรก \ s *) โดยอัตโนมัติและข้ามบรรทัดว่าง (ธง PREG_SPLIT_NO_EMPTY)
- = OPTIONS = -
หากคุณต้องการให้ช่องว่างนำหน้ากำจัดส่วนที่สอง \ 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);