如何删除字符串末尾的逗号?


119

我想删除字符串末尾的逗号。由于现在我正在使用

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

但这只会删除字符串的最后一个字符。我正在动态添加字符串,因此有时字符串末尾没有逗号。如果字符串末尾有逗号,PHP如何删除字符串末尾的逗号?

Answers:


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

rtrim此处的文档


27
这将删除多个逗号:“ a,b ,,”将变为“ a,b”。无论那是OP所需要的,我都不知道...
Greg

1
谢谢,我一生都在做着这样的事
Farhad

38

这是一个经典的问题,有两个解决方案。如果要删除一个逗号(可能不存在),请使用:

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

如果要删除行尾的所有逗号,请使用以下更简单的方法:

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

rtrim函数(以及用于左修剪的相应ltrim)非常有用,因为您可以指定要删除的字符范围,即删除逗号和尾随空格,您可以编写:

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

感谢您的详细说明。这澄清了事情!
zeckdude

12

我猜你是在循环中串联一些东西

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

更好的方法是收集数组中的项目,然后将其与所需的定界符连接起来

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

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

这解决了通常在连接中出现的尾部和双定界符问题


好建议。但是,并非所有串联都可以在PHP中进行。就我而言,我正在发送Javascript连接字符串供PHP解散。
Sablefoste

4

如果要在循环中串联某些内容,也可以通过以下方式进行:

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




1

rtrim($ string,“,”); 是最简单的方法。


1

我的字符串末尾有一个讨厌的“不可见”空间,必须这样做

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

但是上面的解决方案更好

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.