$string = "
put returns between paragraphs
for linebreak add 2 spaces at end
";
Ingin menghapus semua baris baru dari string.
Saya sudah regex ini, itu bisa menangkap mereka semua, masalahnya adalah saya tidak tahu dengan fungsi yang harus saya gunakan.
/\r\n|\r|\n/
$string
harus menjadi:
$string = "put returns between paragraphs for linebreak add 2 spaces at end ";
preg_replace
. Ini hampir dua kali lebih lambatstr_replace
.s($str)->normalizeLineEndings('')
bermanfaat, seperti yang ditemukan di perpustakaan mandiri ini . Ini tidak hanya akan menghapus LF, CR dan CRLF, tetapi juga setiap baris baru Unicode.Jawaban:
Anda harus berhati-hati terhadap jeda baris ganda, yang akan menyebabkan spasi ganda. Gunakan ungkapan reguler yang sangat efisien ini:
Beberapa spasi dan baris baru diganti dengan satu ruang.
Sunting: Seperti yang telah ditunjukkan orang lain, solusi ini memiliki masalah pencocokan satu baris baru di antara kata-kata. Ini tidak ada dalam contoh, tetapi orang dapat dengan mudah melihat bagaimana situasi itu bisa terjadi. Alternatifnya adalah dengan melakukan hal berikut:
sumber
/(?![ ])\s+/
Beberapa komentar tentang jawaban yang diterima:
The
+
berarti "1 atau lebih". Saya pikir Anda tidak perlu mengulanginya\s
. Saya pikir Anda bisa menulis'/\s+/'
.Juga, jika Anda ingin menghapus spasi putih terlebih dahulu dan terakhir dalam string, tambahkan
trim
.Dengan modifikasi ini, kodenya adalah:
sumber
/\s\s+/
akan gagal mencocokkan linefeed infoo\nbar
.Gunakan saja
preg_replace()
Anda bisa lolos dengan
str_replace()
yang satu ini, meskipun kode tidak terlihat bersih:Lihat langsung di ideone
sumber
$string = preg_replace("~[\r\n]~", "",$string);
sumber
\r
karakterAnda harus menggunakan str_replace untuk kecepatannya dan menggunakan tanda kutip ganda dengan sebuah array
sumber
\n
dan tidak\r\n
lagi saya pikir OP meminta untuk menempatkan satu spasi di tempat baris baruSaya tidak yakin apakah ini memiliki nilai terhadap jawaban yang sudah dikirimkan tetapi saya juga bisa mempostingnya.
sumber
Penggantian regre PCRE dapat dilakukan dengan menggunakan preg_replace: http://php.net/manual/en/function.preg-replace.php
Akan mengganti baris baru atau mengembalikan karakter dengan spasi. Jika Anda tidak ingin apa pun menggantikannya, ubah argumen ke-2 menjadi
''
.sumber
preg
fungsi menggunakan PCRE, tidak POSIX, ekspresi reguler. Ada beberapaereg
fungsi yang menggunakan POSIX, tetapi sekarang sudah tidak digunakan lagi.Gunakan ini:
ganti serangkaian baris baru dengan string kosong:
atau Anda mungkin ingin mengganti baris baru dengan satu ruang:
sumber
\\n
terlihat mengerikan.\\\\
mencocokkan backslash tunggal hanya mengerikan.Urutan melarikan diri
\R
cocok dengan baris umum generikDemo Regex101
sumber
Istirahat baris dalam teks umumnya direpresentasikan sebagai:
\ r \ n - di komputer windows
\ r - di komputer Apple
\ n - di Linux
sumber
Apa tentang:
Ini harus menjadi solusi yang cukup kuat karena \ n tidak bekerja dengan benar di semua sistem jika saya tidak salah ...
sumber
Saya terkejut melihat betapa sedikit yang diketahui semua orang tentang regex.
Strip baris baru dalam php adalah
Dalam perl
Berarti ganti karakter baris baru di akhir baris (untuk efisiensi) - opsional didahului dengan carriage return - dengan spasi.
\ n atau \ 015 adalah baris baru. \ r atau \ 012 adalah carriage return. ? di regex berarti kecocokan 1 atau nol dari karakter sebelumnya. $ in regex berarti cocok dengan garis akhir.
Referensi regex asli dan terbaik adalah perldoc perlre, setiap pembuat kode harus mengenal dokumen ini dengan baik: http://perldoc.perl.org/perlre.html Catatan tidak semua fitur didukung oleh semua bahasa.
sumber
ini adalah pola yang akan saya gunakan
sumber
mungkin ini bekerja:
sumber
Yang ini juga menghapus tab
sumber
Anda dapat mencoba kode di bawah ini untuk mempertahankan spasi putih dan baris baru dalam teks Anda.
sumber
Banyak dari solusi ini tidak berhasil untuk saya. Ini berhasil meskipun: -
Berikut rujukannya: - PCRE dan Baris Baru
sumber
kode di bawah ini berfungsi untuk semua teks, silakan gunakan:
sumber
Anda dapat menghapus garis baru dan beberapa spasi putih.
sumber