bir dizenin sonundaki virgülü nasıl kaldırırım?


119

Bir dizenin sonundaki virgülü kaldırmak istiyorum. Şimdi olduğu gibi kullanıyorum

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

ancak bu yalnızca dizenin son karakterini kaldırır. Dizeyi dinamik olarak ekliyorum, bu yüzden bazen dizenin sonunda virgül yok. Dizenin sonunda virgül varsa PHP'nin dizenin sonundaki virgülü kaldırmasını nasıl sağlayabilirim?

Yanıtlar:



38

Bu, iki çözümü olan klasik bir sorudur. Orada olabilecek veya olmayabilecek tam olarak bir virgül kaldırmak istiyorsanız, şunu kullanın:

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

Bir satırın sonundaki tüm virgülleri kaldırmak istiyorsanız, daha basit olanı kullanın:

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

Rtrim işlevi (ve sol kırpma için karşılık gelen ltrim), kaldırılacak bir karakter aralığı belirleyebildiğiniz için çok kullanışlıdır, yani yazacağınız virgül ve sondaki beyaz boşlukları kaldırmak için:

$string = rtrim($string, ", \t\n");

Bu detaylı açıklama için teşekkür ederim. Bu işleri netleştirir!
zeckdude

12

sanırım döngüde bir şeyler birleştiriyorsunuz, örneğin

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

çok daha iyisi, bir dizideki öğeleri toplamak ve ardından ihtiyacınız olan bir sınırlayıcıyla birleştirmektir.

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

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

bu, genellikle birleştirme ile ortaya çıkan sondaki ve çift sınırlayıcı sorunlarını çözer


İyi bir öneri. Ancak, tüm birleştirmeler PHP'de gerçekleşmeyebilir. Benim durumumda, PHP'nin çözülmesi için Javascript birleştirilmiş dizesi gönderiyorum.
Sablefoste

4

Döngüdeki bir şeyi birleştiriyorsanız, bunu şu şekilde de yapabilirsiniz:

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

2

rtrim işlevine bir göz atın

rtrim ($string , ",");

son karakter virgül ise yukarıdaki satır bir karakteri kaldıracaktır



1

Basit bir normal ifade işe yarar

$string = preg_replace("/,$/", "", $string)

2
Geliştirici, bir sorunu çözmek için normal ifadeyi kullanıyor ve şimdi iki sorunu var.
Sigurd


1

İpimin sonunda sinir bozucu "görünmez" bir boşluk vardı ve bunu yapmak zorunda kaldım

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

Ama yukarıdaki çözüm daha iyidir

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.