文字列の末尾からコンマを削除するにはどうすればよいですか?


119

文字列の末尾からカンマを削除したいのですが。現状のまま使用しています

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

ただし、文字列の最後の文字のみが削除されます。文字列を動的に追加しているため、文字列の最後にカンマがない場合があります。文字列の最後にコンマがある場合、PHPでコンマを削除するにはどうすればよいですか?

回答:


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

rtrimここのドキュメント


27
これにより、複数のコンマが削除されます。「a、b ,,,」は「a、b」になります。それがOPが望んでいるものかどうかはわかりません...
グレッグ

1
ありがとう、私はsubstr、strlenなどでこれを行っていました...ずっと私の人生
Farhad

38

これは古典的な質問であり、2つの解決策があります。カンマを1つだけ削除したい場合は、次のようにします。

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

行末からすべてのコンマを削除したい場合は、より単純な方法を使用します。

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

rtrim関数(および左トリムの対応するltrim)は、削除する文字の範囲を指定できるため、非常に便利です。

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

詳しい説明ありがとうございます。それは物事を明確にします!
zeckdude 2009年

12

あなたはループの中で何かを連結していると思います

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

配列内のアイテムを収集してから、必要な区切り文字で結合するのがはるかに良い

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

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

これにより、通常連結で発生する末尾および二重区切り文字の問題が解決されます


良い提案。ただし、すべての連結がPHPで行われるとは限りません。私の場合、私は、PHPが解明するためのJavaScript連結ストリングを送信しています。
Sablefoste 2015

4

ループ内で何かを連結している場合は、次のように行うこともできます。

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

2

rtrim関数を確認してください

rtrim ($string , ",");

上記の行は、最後の文字がカンマの場合、文字を削除します




1

rtrim($ string、 "、"); 最も簡単な方法です。


1

文字列の最後に厄介な「見えない」スペースがあり、これを行わなければなりませんでした

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

しかし、上記の解決策はより良いです

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.