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?

alex
sumber

Jawaban:

372
$name = str_replace(' ', '_', $name);
Tim Fountain
sumber
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);
aksu
sumber
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
13

Gunakan fungsi str_replace PHP.

Sesuatu seperti:

$str = str_replace(' ', '_', $str);
anubhava.dll
sumber
7

Gunakan str_replace :

str_replace(" ","_","Alex Newton");
Niklas
sumber
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);
blakroku
sumber
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);
jmmaguigad.dll
sumber
1

Saya dulu seperti ini

$option = trim($option);
$option = str_replace(' ', '_', $option);
Fil
sumber
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);
Raj
sumber
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
Thoracius Appotite
sumber
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)

Aleksey Polyanskiy
sumber
Tentang apa '/\s+/'?
FlameStorm