Tulis \n di dalam string dengan tanda kutip ganda untuk mencetak baris baru: echo "Line 1\nLine 2";. Konstanta PHP_EOL melakukan hal yang sama dan lebih jelas dibaca di akhir baris: echo 'Done' . PHP_EOL;. Di halaman web, baris baru tidak tampil sebagai pergantian baris; di sana kamu butuh <br> atau nl2br().
Tanda kutip tunggal vs tanda kutip ganda
Escape sequence seperti \n dan \t hanya berfungsi di dalam tanda kutip ganda. Di dalam tanda kutip tunggal, '\n' adalah dua karakter: backslash dan huruf n. Inilah alasan yang biasa di balik "\n tidak berfungsi".
Halaman string mencantumkan setiap escape sequence yang dikenali oleh tanda kutip ganda.
PHP_EOL vs "\n"
PHP_EOL adalah akhiran baris dari sistem tempat PHP berjalan: "\n" di Linux dan macOS, "\r\n" di Windows. Pakai untuk output terminal dan file yang akan kamu baca di komputer yang sama. Saat sebuah format menentukan akhiran barisnya sendiri, pakai itu: header HTTP dan email butuh "\r\n", dan sebagian besar alat bisa membaca "\n" dengan baik di mana pun.
"\r" adalah carriage return, "\n" adalah line feed. File Windows mengakhiri baris dengan keduanya, "\r\n", itulah sebabnya teks dari pengguna Windows atau dari <textarea> sering berisi karakter \r yang tidak kamu duga.
Baris baru di HTML: br dan nl2br
Browser meleburkan baris baru menjadi satu spasi, jadi echo "a\nb" tampil sebagai a b di halaman. Cetak <br> sendiri, atau biarkan baris baru tetap ada di teksmu lalu ubah dengan nl2br(), yang menyisipkan <br /> sebelum setiap baris baru. Jalankan kode ini dan bandingkan tab Output dan tab Halaman:
Di tab Output, ketiganya terlihat mirip. Di tab Halaman, yang pertama menyatu dalam satu baris, nl2br() memecahnya, dan <pre> mempertahankan baris baru seperti yang ditulis.
Menampilkan input textarea beserta baris barunya
Teks dari <textarea> mempertahankan baris-baris yang diketik pengguna, tetapi kamu harus melakukan escape sebelum mencetaknya ke HTML. Urutannya penting: htmlspecialchars() dulu, lalu nl2br(), kalau tidak tag <br /> itu sendiri yang akan di-escape. Jalankan, ketik beberapa baris ke kotaknya, lalu tekan Preview: script yang sama berjalan lagi dengan $_POST yang sudah terisi.
Baris baru dari textarea bisa datang sebagai "\r\n" atau "\n"; keduanya berisi "\n", jadi menghitung karakter itu berfungsi untuk kedua kasus. htmlspecialchars() menjelaskan kenapa escaping tidak boleh dilewatkan di sini.
Memecah string berdasarkan baris baru
explode("\n", $text) berfungsi untuk teks yang kamu buat sendiri. Untuk teks dari pengguna atau file, akhiran barisnya bisa berupa "\r\n", "\n", atau "\r"; preg_split('/\R/', $text) menangani semuanya, karena \R cocok dengan baris baru jenis apa pun.
Menghapus baris baru dari string
Untuk mengubah teks multibaris menjadi satu baris, ganti setiap jenis akhiran baris. Ganti "\r\n" sebelum karakter tunggalnya, kalau tidak setiap baris baru Windows akan menjadi dua spasi:
trim() dan rtrim() menghapus baris baru di ujung-ujung string tetapi tidak pernah di tengahnya, jadi keduanya adalah alat yang tepat untuk baris yang dibaca dari file dan alat yang salah untuk menggabungkan baris.
Pertanyaan yang sering diajukan
Bagaimana cara mencetak baris baru dengan echo di PHP?
Taruh \n di dalam string dengan tanda kutip ganda: echo "Line 1\nLine 2";. Atau tambahkan konstantanya: echo 'Line 1' . PHP_EOL;. Di browser, baris baru tidak ditampilkan; pakai <br> atau nl2br() di sana.
Kenapa \n tidak berfungsi di PHP?
Entah string-nya memakai tanda kutip tunggal, tempat '\n' berarti backslash dan huruf n, atau output-nya ditampilkan sebagai HTML, tempat browser memperlakukan baris baru seperti spasi. Pakai "\n" dengan tanda kutip ganda untuk output teks dan nl2br() atau <br> untuk halaman web.
Apa itu PHP_EOL?
Konstanta yang berisi akhiran baris dari sistem operasi tempat PHP berjalan: "\n" di Linux dan macOS, "\r\n" di Windows. Pakai untuk output yang ditujukan ke terminal atau file lokal; untuk HTTP, email, dan file CSV, format-nya biasanya sudah menentukan akhiran baris apa pun sistem operasinya.
Apa fungsi nl2br di PHP?
nl2br($text) menyisipkan <br /> sebelum setiap baris baru di string, sehingga teks yang diketik di <textarea> tetap mempertahankan baris-barisnya saat ditampilkan di HTML. Lakukan escape lebih dulu: nl2br(htmlspecialchars($text)).
Bagaimana cara menghapus baris baru dari string di PHP?
Ganti ketiga jenis akhiran baris: str_replace(["\r\n", "\r", "\n"], ' ', $text), atau dengan regex, preg_replace('/\R/', ' ', $text). Untuk menghapus baris baru di akhir saja, pakai rtrim($text, "\r\n").