Aku punya ini:
$text = '
hello world
hello
';
Bagaimana cara menghapus
hanya jika itu pada jalurnya sendiri? Jadi dengan contoh di atas, yang kedua
harus dihapus. Hasilnya harus:
$text = '
hello world
hello
';
Apa yang saya coba sejauh ini
Melalui str_replace()
, saya dapat:
$text = str_replace(' ', '', $text);
Tapi itu akan menghapus semua contoh
, tidak hanya ketika itu pada jalurnya sendiri.
php
str-replace
Henrik Petterson
sumber
sumber
$text = str_replace('\n'.' '.'\n', '', $text);
tetapi tidak berhasil. Lihat .str_replace()
bukan menilai pengalaman saya. =)Jawaban:
Saya sudah mencoba pendekatan ini dan saya mendapatkan output yang Anda inginkan
Output saya di lokal saya adalah ini:
sumber
Pendekatan saya adalah:
Menghasilkan kode berikut:
sumber
dengan teks kosong, tanpa remote seluruh baris: /. Juga, ingatlah bahwa bukan saya yang menurunkan jawaban Anda :) Komentar saya hanyalah pesan yang ramah :)Mungkin kira-kira seperti ini:
http://sandbox.onlinephpfunctions.com/code/f4192b95e0e41833b09598b6ec1258dca93c7f06
(yang bekerja pada PHP5 , tetapi entah bagaimana tidak berfungsi pada beberapa versi PHP7 )
Alternatifnya adalah:
sumber
Jika Anda tahu batas karakter baris Anda, dan Anda
selalu diikuti oleh baris baru:Output (beberapa spasi putih awal hilang dalam pemformatan di sini):
Peringatan: Setiap baris yang diakhiri dengan
konten lain sebelumnya juga akan terpengaruh, jadi ini mungkin tidak memenuhi kebutuhan Anda.sumber
str_replace()
!
? Misalnya:" \n"
Anda dapat menggunakan ekspresi reguler untuk ini, menggunakan pengubah DOTALL dan MULTILINE bersama-sama dengan pernyataan melihat-lihat:
(?sm)
: DOTALL (s) MULTILINE (m)(?<=\n)
: mendahului baris baru (bukan bagian dari pertandingan)\s* \s*
: tunggal & nbsp; dengan spasi putih opsional(?=\n)
: trailing newline (bukan bagian dari pertandingan)sumber
Anda dapat memecah menjadi beberapa baris kemudian menggantikan
string kosong pada baris yang hanya berisi a
dan spasi.Kami akan menyimpan ujung garis aslinya, dengan menangkapnya.
Keluaran:
sumber