Saya memiliki string dengan jeda baris di database saya. Saya ingin mengubah string itu menjadi sebuah array, dan untuk setiap baris baru, lompat satu tempat indeks dalam array. Jika stringnya adalah:
Hasil yang saya inginkan adalah ini:
Jawaban: Anda dapat menggunakan
Misalnya, jika Anda memiliki kode ini:
Anda akan mendapatkan hasil ini:
Saya selalu menggunakan ini dengan sangat sukses:
(diperbarui dengan final, terima kasih @OBsterMan) Jeda baris didefinisikan secara berbeda pada platform yang berbeda, \ r \ n, \ r atau \ n. Menggunakan RegExp untuk membagi string yang bisa Anda cocokkan ketiganya dengan \ R Jadi untuk masalah Anda:
Itu akan cocok dengan jeda baris pada Windows, Mac dan Linux! PHP sudah mengetahui karakter baris baru sistem saat ini. Cukup gunakan konstanta EOL.
Alternatif jawaban Davids yang lebih cepat (lebih cepat) adalah dengan menggunakan
Apa yang terjadi adalah:
Saya melakukan patokan pada src halaman ini dan membagi garis 1000 kali dalam for for loop dan: Lebih detail dan info bencmark di forum saya David: Arah yang bagus, tetapi Anda melewatkannya. ini bekerja untuk saya:
Anda tidak perlu fungsi preg_ * atau pola preg atau str_replace di dalam, dll. Untuk berhasil memecah string menjadi array oleh baris baru. Dalam semua skenario, baik itu Linux / Mac atau m $, ini akan dilakukan.
The "(bukannya ') cukup penting karena jika tidak, baris istirahat tidak akan ditafsirkan. StackOverflow tidak akan memungkinkan saya untuk mengomentari jawaban hesselbom (tidak cukup reputasi), jadi saya menambahkan sendiri ...
Ini bekerja paling baik untuk saya karena juga menghilangkan spasi putih depan (kedua) dan trailing (pertama) secara otomatis dan juga melompati garis kosong (bendera PREG_SPLIT_NO_EMPTY). - = PILIHAN = - Jika Anda ingin tetap memimpin spasi putih, cukup singkirkan yang kedua * dan buatlah rtrim () sebagai gantinya ...
Jika Anda perlu menjaga baris kosong, singkirkan bendera NULL (itu hanya placeholder) dan PREG_SPLIT_NO_EMPTY, seperti begitu ...
Atau menjaga spasi putih dan baris kosong ...
Saya tidak melihat alasan mengapa Anda ingin tetap mengikuti spasi, jadi saya sarankan untuk meninggalkan yang pertama di sana. Tapi, jika semua yang Anda inginkan adalah untuk dibagi dengan baris baru (seperti judulnya), ini sederhana (seperti yang disebutkan oleh Jan Goyvaerts) ...
Seperti jawaban lain yang telah ditentukan, pastikan untuk menggunakan
LF = "\ n" = chr (10), CR = "\ r" = chr (13)
Bagi siapa pun yang mencoba menampilkan cronjobs di crontab dan merasa frustrasi tentang cara memisahkan setiap baris, gunakan explode:
menggunakan '\ n' tampaknya tidak berfungsi tetapi chr (10) berfungsi dengan baik: D Semoga ini menyelamatkan seseorang sakit kepala. Anda bisa menggunakan ini:
Anda dapat melakukan $ string = nl2br ($ string) sehingga baris Anda diubah
Dengan cara ini tidak masalah jika sistem menggunakan \ r \ n atau \ n atau \ r Kemudian Anda bisa memasukkannya ke dalam array:
Itulah cara saya:
Ini juga akan melewati semua baris kosong juga.
array yang benar:
Sematkan Online:
Ambil ini di dokumen php:
Metode ini selalu berhasil untuk saya:
Menggunakan hanya paket 'base' juga merupakan solusi untuk kasus-kasus sederhana:
Menggunakan karakter khusus apa pun antara string atau baris |