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?

Antworten:


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

Docs für rtrimhier


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");

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


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 = ",";
}

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



1

Ein einfacher regulärer Ausdruck würde funktionieren

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

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.


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,', ');

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.