Saya menerima string dari kueri basis data, lalu saya menghapus semua tag HTML, carriage return, dan baris baru sebelum saya memasukkannya ke file CSV. Satu-satunya hal adalah, saya tidak dapat menemukan cara untuk menghilangkan kelebihan ruang putih dari antara string.
Apa yang akan menjadi cara terbaik untuk menghapus karakter spasi putih?
Jawaban:
Tidak yakin persis apa yang Anda inginkan tetapi di sini ada dua situasi:
Jika Anda hanya berurusan dengan kelebihan whitespacepada awal atau akhir string yang dapat Anda gunakan
trim()
,ltrim()
ataurtrim()
untuk menghapusnya.Jika Anda berhadapan dengan ruang ekstra dalam sebuah string, pertimbangkan a
preg_replace
dari banyak whitespaces" "*
dengan satu whitespace" "
.Contoh:
sumber
$foo = preg_replace( '/\s+/', ' ', $foo );
akan membunuh efeknl2br()
Atau, ganti dengan garis bawah, & nbsp; dll.
sumber
Hi Earth
dengan 4 spasi di antara akan menjadi:HiEarth
. Ini tidak menyelesaikan masalah saya dengan pertanyaan yang relevan.$str = trim(preg_replace('/\s+/',' ', $str));
Baris kode di atas akan menghapus spasi tambahan , serta spasi awal dan akhir.
sumber
tidak ada contoh lain yang berfungsi untuk saya, jadi saya telah menggunakan yang ini:
ini menggantikan semua tab, baris baru, spasi ganda dll menjadi 1 ruang sederhana.
sumber
\s+
. Meskipun sudah kembali pada tahun 2014 jadi mungkin itu diubah, belum menyentuh PHP selama 3 tahun terakhir, tidak dapat berkomentar tetapi akan meninggalkan jawaban saat ini sementara itu adalah solusi dan mungkin masih dalam beberapa kasus.Jika Anda ingin mengganti hanya beberapa spasi dalam string, misalnya:
"this string have lots of space . "
Dan Anda mengharapkan jawabannya"this string have lots of space"
, Anda dapat menggunakan solusi berikut:sumber
Ada kelemahan keamanan untuk menggunakan preg_replace (), jika Anda mendapatkan payload dari input pengguna [atau sumber tidak tepercaya lainnya]. PHP mengeksekusi ekspresi reguler dengan eval (). Jika string yang masuk tidak dibersihkan dengan benar, aplikasi Anda berisiko terkena injeksi kode .
Dalam aplikasi saya sendiri, daripada repot-repot membersihkan input (dan karena saya hanya berurusan dengan string pendek), saya malah membuat fungsi prosesor yang sedikit lebih intensif, meskipun yang aman, karena tidak eval () apa pun.
sumber
sumber
Kamu bisa memakai:
Ini menghilangkan spasi putih tambahan dari kedua sisi string dan mengubah dua spasi menjadi satu di dalam string. Perhatikan bahwa ini tidak akan mengubah tiga ruang atau lebih berturut-turut menjadi satu! Cara lain yang bisa saya sarankan adalah menggunakan implode dan meledak yang lebih aman tetapi sama sekali tidak optimal!
Saran saya adalah menggunakan asli untuk loop atau menggunakan regex untuk melakukan pekerjaan semacam ini.
sumber
Untuk memperluas jawaban Sandip, saya memiliki banyak string muncul di log yang salah kode dalam bit.ly. Mereka bermaksud hanya kode URL tetapi menempatkan pegangan twitter dan beberapa hal lainnya setelah spasi. Terlihat seperti ini
Biasanya, itu tidak akan menjadi masalah, tapi saya mendapatkan banyak upaya injeksi SQL, jadi saya mengarahkan ulang apa pun yang bukan ID yang valid ke 404. Saya menggunakan metode preg_replace untuk membuat string productID yang tidak valid menjadi sebuah ID produk yang valid.
Saya mencari spasi di URL dan kemudian menghapus semuanya setelahnya.
sumber
Baru-baru ini saya menulis fungsi sederhana yang menghilangkan ruang putih berlebih dari string tanpa ekspresi reguler
implode(' ', array_filter(explode(' ', $str)))
.sumber
sumber