bagaimana cara menghapus koma di ujung string?

119

Saya ingin menghapus koma dari ujung string. Seperti yang sekarang saya gunakan

$string = substr($string,0,-1);

tapi itu hanya menghapus karakter terakhir dari string. Saya menambahkan string secara dinamis, jadi terkadang tidak ada koma di akhir string. Bagaimana caranya agar PHP menghapus koma dari ujung string jika ada di ujungnya?

zeckdude
sumber

Jawaban:

303
$string = rtrim($string, ',');

Dokumen untuk rtrimdi sini

Sigurd
sumber
27
Ini akan menghapus beberapa koma: "a, b ,,," akan menjadi "a, b". Apakah itu yang diinginkan OP atau tidak, saya tidak tahu ...
Greg
1
Terima kasih, saya melakukan ini dengan substr, strlen, ... sepanjang hidup saya
Farhad
38

Ini adalah pertanyaan klasik, dengan dua solusi. Jika Anda ingin menghapus hanya satu koma, yang mungkin ada atau tidak ada, gunakan:

if (substr($string, -1, 1) == ',')
{
  $string = substr($string, 0, -1);
}

Jika Anda ingin menghapus semua koma dari akhir baris, gunakan yang lebih sederhana:

$string = rtrim($string, ',');

Fungsi rtrim (dan ltrim terkait untuk trim kiri) sangat berguna karena Anda dapat menentukan rentang karakter yang akan dihapus, yaitu untuk menghapus koma dan spasi kosong yang akan Anda tulis:

$string = rtrim($string, ", \t\n");
Ben Russell
sumber
Terima kasih atas penjelasan detailnya. Itu menjelaskan banyak hal!
zeckdude
12

saya kira Anda menggabungkan sesuatu dalam lingkaran, seperti

foreach($a as $b)
  $string .= $b . ',';

jauh lebih baik adalah mengumpulkan item dalam array dan kemudian menggabungkannya dengan pembatas yang Anda butuhkan

foreach($a as $b)
  $result[] = $b;

$result = implode(',', $result);

ini memecahkan masalah trailing dan pembatas ganda yang biasanya terjadi dengan penggabungan

pengguna187291
sumber
Saran yang bagus. Namun, tidak semua penggabungan dapat dilakukan di PHP. Dalam kasus saya, saya mengirim string gabungan Javascript untuk PHP terurai.
Sablefoste
4

Jika Anda menggabungkan sesuatu dalam loop, Anda juga dapat melakukannya dengan cara ini:

$coma = "";
foreach($a as $b){
    $string .= $coma.$b;
    $coma = ",";
}
cesar.mi
sumber
2

lihatlah fungsi rtrim

rtrim ($string , ",");

baris di atas akan menghapus karakter jika karakter terakhir adalah koma

Anand Shah
sumber
1

Ekspresi reguler sederhana akan berhasil

$string = preg_replace("/,$/", "", $string)
AlexWilson
sumber
2
Pengembang menggunakan ekspresi reguler untuk menyelesaikan masalah dan sekarang dia memiliki dua masalah.
Sigurd
1

rtrim ($ string, ","); adalah cara termudah.

mepo
sumber
1

Saya memiliki ruang "tak terlihat" yang mengganggu di ujung tali saya dan harus melakukan ini

 $update_sql=rtrim(trim($update_sql),',');

Tapi solusi di atas lebih baik

 $update_sql=rtrim($update_sql,', ');
zzapper
sumber
0

Awali dengan:

if(substr($string, -1)==",")
Kaivosukeltaja
sumber