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

问题描述:

我想删除字符串末尾的逗号。因为它现在我正在使用如何从字符串末尾删除逗号?

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

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

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

Docs for rtrim here

+25

这将删除多个逗号:“a,b ,,,”将变成“a,b”。无论这是OP的意愿或不是我不知道... – Greg 2009-10-29 10:20:25

+0

完美,谢谢! – zeckdude 2009-10-29 10:25:09

+1

谢谢你,我正在用substr,strlen,...我所有的生活 – Farhad 2015-04-15 17:59:01

先于同:

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

if(substr($str, -1, 1) == ',') { 

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

} 

http://php.net/manual/en/function.substr.php

看看在RTRIM函数

rtrim ($string , ","); 

上面的线将删除一个字符,如果最后一个字符是一个逗号

一个简单的正则表达式将工作

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

开发人员使用正则表达式来解决问题,现在他有两个问题。 – Sigurd 2009-10-29 10:24:41

RTRIM($字符串,“”);是最简单的方法。

我想你是串联在回路中的东西,像

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

更好的是收集在一个数组的项目,然后用分隔符加入它,你需要

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

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

这解决了后缀和双分隔符问题通常发生在串联中

+0

好的建议。但是,并非所有的连接都可能发生在PHP中。在我的情况下,我发送一个Javascript串联的字符串用于解开PHP。 – Sablefoste 2015-09-11 19:49:12

这是一个经典问题,有两种解决方案。如果你想删除只有一个逗号,这可能会或可能不会在那里,用途:

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

如果你想从行结束时,所有逗号使用简单:

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

该RTRIM函数(左修剪相应LTRIM)是非常有用的,你可以指定一个字符范围的去除,即删除逗号前后空白你可以这样写:

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

谢谢你的详细解释。这澄清了事情! – zeckdude 2009-10-29 19:33:33

我有一个讨厌的“invisi在我的字符串和结束BLE”空间不得不这样做

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

但上面的解决方案是更好的

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

如果你在环路串联东西,你可以做到这一点在这方式太:

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