Mengganti Spasi dengan Garis Bawah


142

Saya memiliki PHP Script bahwa pengguna akan memasukkan nama seperti: Alex_Newton,

Namun, beberapa pengguna akan menggunakan spasi daripada garis bawah, jadi pertanyaan saya adalah:

Bagaimana cara mengganti spasi secara otomatis dengan Garis Bawah di PHP?

Jawaban:



71

Seperti yang telah dijelaskan oleh orang lain bagaimana melakukannya dengan menggunakan str_replace, Anda juga dapat menggunakan regex untuk mencapai ini.

$name = preg_replace('/\s+/', '_', $name);

12
Ini adalah solusi yang lebih baik dalam arti mengganti banyak spasi dengan satu garis bawah yang biasanya merupakan keluaran yang diinginkan.
frostymarvelous

5
Juga tab dan apa pun
Loupax





7

Anda juga dapat melakukan ini untuk mencegah kata-kata dimulai atau diakhiri dengan garis bawah seperti _words_more_words_, Ini akan menghindari awal dan akhir dengan spasi.

$trimmed = trim($string); // Trims both ends
$convert = str_replace('', '_', $trimmed);

Ini menarik, karena spasi di awal / akhir baris tidak akan diganti dengan _ melainkan dihapus. Padahal, ingatlah bahwa itu mungkin / juga akan menghapus karakter lain dari awal / akhir string sebagai (\ r dan \ n atau tab).
Paul

1

Ini adalah bagian dari kode saya yang membuat spasi menjadi garis bawah untuk menamai file saya:

$file = basename($_FILES['upload']['name']);
$file = str_replace(' ','_',$file);

1

Saya dulu seperti ini

$option = trim($option);
$option = str_replace(' ', '_', $option);

1

Anda dapat menggunakan str_replace say your name is in variable$name

$result = str_replace(' ', '_', $name);

cara lain adalah dengan menggunakan regex, karena ini akan membantu menghilangkan ruang 2-waktu dll.

  $result=  preg_replace('/\s+/', '_', $name);

0

Strtrmengganti karakter tunggal, bukan string, jadi ini solusi yang bagus untuk contoh ini. Seharusnya strtrlebih cepat dari str_replace(tapi untuk kasus penggunaan ini, keduanya sangat cepat).

echo strtr('Alex Newton',' ','_');
//outputs: Alex_Newton

Keren, jika seseorang mengubah spasi menjadi "_" dalam beberapa file yang panjang (log?), Ini bisa jadi lebih cepat? (Meskipun tidak ada bukti / referensi, ini mungkin jawaban yang menarik bagi siapa pun yang tertarik dengan kecepatan eksekusi).
Paul

Hei Paul, menurutku begitu. Cobalah dan patokan.
Thoracius Appotite

0

str_replace- Ini adalah solusi yang jelas. Tapi terkadang Anda perlu tahu apa sebenarnya ruang yang ada. Saya punya masalah dengan spasi dari file csv.

Ada dua karakter tetapi salah satunya adalah 0160 (0x0A0) dan lainnya tidak terlihat (0x0C2)

solusi terakhir saya:

$str = preg_replace('/\xC2\xA0+/', '', $str);

Saya menemukan simbol tak terlihat dari penampil HEX dari mc (penampil tengah malam - F3 - F9)


Tentang apa '/\s+/'?
FlameStorm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.