Wie entferne ich ein Komma vom Ende einer Zeichenfolge?

119

Ich möchte das Komma am Ende einer Zeichenfolge entfernen. Wie es jetzt ist, benutze ich

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

Dadurch wird jedoch nur das letzte Zeichen der Zeichenfolge entfernt. Ich füge die Zeichenfolge dynamisch hinzu, sodass manchmal am Ende der Zeichenfolge kein Komma steht. Wie kann ich PHP das Komma vom Ende der Zeichenfolge entfernen lassen, wenn am Ende ein Zeichen steht?

Zeckdude
quelle

Antworten:

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

Docs für rtrimhier

Sigurd
quelle
27
Dadurch werden mehrere Kommas entfernt: "a, b ,,," wird zu "a, b". Ob das OP will oder nicht, weiß ich nicht ...
Greg
1
Danke, ich habe das mit substr gemacht, strlen, ... mein ganzes Leben lang
Farhad
38

Dies ist eine klassische Frage mit zwei Lösungen. Wenn Sie genau ein Komma entfernen möchten, das möglicherweise vorhanden ist oder nicht, verwenden Sie:

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

Wenn Sie alle Kommas am Ende einer Zeile entfernen möchten, verwenden Sie Folgendes:

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

Die rtrim-Funktion (und das entsprechende ltrim für das linke Trimmen) ist sehr nützlich, da Sie einen Bereich von Zeichen angeben können, die entfernt werden sollen, dh um Kommas und nachgestellte Leerzeichen zu entfernen, die Sie schreiben würden:

$string = rtrim($string, ", \t\n");
Ben Russell
quelle
Vielen Dank für diese ausführliche Erklärung. Das klärt die Dinge!
Zeckdude
12

Ich denke, Sie verketten etwas in der Schleife, wie

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

Viel besser ist es, Elemente in einem Array zu sammeln und es dann mit einem Trennzeichen zu verknüpfen, das Sie benötigen

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

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

Dies löst nachfolgende und doppelte Trennzeichenprobleme, die normalerweise bei der Verkettung auftreten

user187291
quelle
Guter Vorschlag. Es können jedoch nicht alle Verkettungen in PHP stattfinden. In meinem Fall sende ich eine mit Javascript verkettete Zeichenfolge, damit PHP sie entwirren kann.
Sablefoste
4

Wenn Sie etwas in der Schleife verketten, können Sie dies auch folgendermaßen tun:

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

Schauen Sie sich die RTRIM-Funktion an

rtrim ($string , ",");

In der obigen Zeile wird ein Zeichen entfernt, wenn das letzte Zeichen ein Komma ist

Anand Shah
quelle
1

Ein einfacher regulärer Ausdruck würde funktionieren

$string = preg_replace("/,$/", "", $string)
AlexWilson
quelle
2
Entwickler verwenden reguläre Ausdrücke, um ein Problem zu lösen, und jetzt hat er zwei Probleme.
Sigurd
1

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

Mepo
quelle
1

Ich hatte einen lästigen "unsichtbaren" Raum am Ende meiner Schnur und musste dies tun

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

Eine obige Lösung ist jedoch besser

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

Gehen Sie dem voraus mit:

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