2009-10-29 16 views
85

Ich möchte das Komma am Ende einer Zeichenfolge entfernen. So wie es jetzt ist, verwende ichWie entferne ich ein Komma am Ende einer Zeichenkette?

aber das entfernt nur das letzte Zeichen der Zeichenfolge. Ich füge die Zeichenfolge dynamisch hinzu, daher gibt es manchmal kein Komma am Ende der Zeichenfolge. Wie kann ich PHP entfernen das Komma vom Ende der Zeichenfolge, wenn es eine am Ende ist?

Antwort

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

Docs for rtrim here

+25

Dies wird mehrere Kommas entfernen: "a, b ,,, wird" a, b ".Ob das das OP will oder nicht weiß ich nicht ... – Greg

+0

perfekt, danke! – zeckdude

+1

Danke, ich tat das mit substr, strlen, ... mein ganzes Leben – Farhad

2

haben einen Blick auf die rtrim Funktion

rtrim ($string , ","); 

wird die obige Zeile ein Zeichen entfernen, wenn das letzte Zeichen ein Komma

0

Ein einfacher regulärer Ausdruck

funktionieren würde
$string = preg_replace("/,$/", "", $string) 
+2

Entwickler verwenden regulären Ausdruck, um ein Problem zu lösen, und jetzt hat er zwei Probleme. – Sigurd

1

rtrim ist ($ string ""); ist der einfachste Weg.

9

ich denke, Sie sind etwas in der Schleife verketten, wie

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

viel besser ist, Elemente in einem Array zu sammeln und sie dann mit einem Trennzeichen müssen sich registrieren Sie

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

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

Dies löst trailing und double delimiter Probleme, die normalerweise bei der Verkettung auftreten

+0

Guter Vorschlag. Es können jedoch nicht alle Verkettungen in PHP stattfinden. In meinem Fall sende ich eine mit JavaScript verkettete Zeichenfolge, die PHP entschlüsseln soll. – Sablefoste

34

Dies ist eine klassische Frage, mit zwei Lösungen. Wenn Sie genau ein Komma entfernen möchten, die sein kann oder auch nicht dort, zu verwenden:

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

Wenn Sie alle Kommas vom Ende einer Zeile entfernen möchten verwenden die einfachere:

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

die rtrim Funktion (und entsprechende ltrim für den linken Rand) ist sehr nützlich, da es eine Reihe von Zeichen angeben können, zu entfernen, das heißt Komma zu entfernen und nachfolgende Leerzeichen würden Sie schreiben:

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

Vielen Dank für die ausführliche Erklärung. Das klärt die Dinge! – zeckdude

0

ich hatte ein nervtötenden „invisi ble“Platz am Ende meiner Schnur und hatte diese

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

Aber eine Lösung oben zu tun ist besser

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

Wenn Sie etwas in der Schleife sind verketten, können Sie es in das tun kann Übrigens:

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