2009-10-29 123 views
85

我想刪除字符串末尾的逗號。因爲它現在我正在使用如何從字符串末尾刪除逗號?

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

但這隻會刪除字符串的最後一個字符。我正在動態地添加字符串,所以有時在字符串末尾沒有逗號。如何讓PHP在字符串末尾刪除逗號(如果末尾有逗號)?

回答

220
$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

2

看看在RTRIM函數

rtrim ($string , ","); 

上面的線將刪除一個字符,如果最後一個字符是一個逗號

0

一個簡單的正則表達式將工作

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

開發人員使用正則表達式來解決問題,現在他有兩個問題。 – Sigurd 2009-10-29 10:24:41

1

RTRIM($字符串,「」);是最簡單的方法。

9

我想你是串聯在迴路中的東西,像

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

34

這是一個經典問題,有兩種解決方案。如果你想刪除只有一個逗號,這可能會或可能不會在那裏,用途:

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

0

我有一個討厭的「invisi在我的字符串和結束BLE」空間不得不這樣做

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

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

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

如果你在環路串聯東西,你可以做到這一點在這方式太:

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