2010-10-26 127 views
1

我有串這樣刪除最後一個字符串,如果它的「‘

$string = 'aaaaaa, bbbbbb, cccccc, '; 

,我想修改它是這樣

$string = 'aaaaaa, bbbbbb, cccccc'; 

最後一個’,」和空格被刪除。

如何在php中做到這一點? 需要的功能是什麼?


我的全部代碼是這樣的

if(isset($_POST['accomodation'])) $accomodation = 'Accomodation, '; 
if(isset($_POST['dance']))   $dance = 'Dance Lessons, '; 
if(isset($_POST['vacation']))  $vacation = 'Vacation planning, '; 
if(isset($_POST['group']))  $group = 'Group Vacation, '; 
if(isset($_POST['inprivate']))  $inprivate = 'Private Vacation, '; 
if(isset($_POST['land']))   $land = 'Land purchase/lease'; 
if(isset($_POST['all']))   $all = 'All'; 

@$interest = $accomodation.$dance.$vacation.$group.$inprivate.$land; 
@echo $string; 

這樣愚蠢的問題*對不起,它已經這麼久,我沒碰本地PHP編程

+0

非常酷,看到這個彈出很快的所有不同的答案。 – 2010-10-26 14:35:22

+0

您應該刪除錯誤抑制並重新調整代碼的邏輯。 – erisco 2010-10-26 15:30:47

回答

4
$string = preg_replace('/\s*,\s*$/', '', $string); 

,或者方式冷卻器:

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

注意,它不重要的是模式字符串中字符的順序。

@您最後更新。 這改變了一些東西。你可以把所有的變量放在一個數組中,然後使它崩潰。像這樣:

$items = array(); 
$items[] = $accomodation = 'Accomodation'; 
$items[] = $dance = 'Accomodation'; 
... 
$result = implode(', ', $items) 
+0

非常感謝你..完成的代碼真的有很大的幫助.. – GusDeCooL 2010-10-26 14:54:20

0

的時候,一個接着一個逗號空間在最後?

substr($string, 0, -2) 
+0

給予主題行說「刪除最後一個字符串,如果它的','」我假設不是 – 2010-10-26 14:37:25

5

rtrim()功能:

rtrim($string,', '); 

,但你是如何定義字符串?也許你可以在沒有逗號和空格的情況下構建它。

編輯

$interests = array(); 
if(isset($_POST['accomodation'])) $interests[] = 'Accomodation'; 
if(isset($_POST['dance']))   $interests[] = 'Dance Lessons'; 
if(isset($_POST['vacation']))  $interests[] = 'Vacation planning'; 
if(isset($_POST['group']))   $interests[] = 'Group Vacation'; 
if(isset($_POST['inprivate']))  $interests[] = 'Private Vacation'; 
if(isset($_POST['land']))   $interests[] = 'Land purchase/lease'; 
if(isset($_POST['all']))   $all = 'All'; 

$interest = implode(', ',$interests); 
echo $interest; 
+0

也將修剪像「,,,,,」和「,,」,但也許這就是想要的東西...... – 2010-10-26 14:38:58

+0

我更新了代碼,使其更加了解:) – GusDeCooL 2010-10-26 14:43:11

+0

已經試過這個'rtrim($ string,',');'但我沒有刪除最後一個','只刪除最後一個空格:( – GusDeCooL 2010-10-26 14:50:18

1
$string = preg_replace("/,\s*$/","",$string); 

應該做的伎倆

+0

這會確定工作 - 儘管通常使用PHP字符串函數代替RegEx,因爲它們執行得更快。但是,差異相當小 – SW4 2010-10-26 14:34:00

+0

@Ergo你是絕對正確的。我只是喜歡正則表達式:) – Cfreak 2010-10-26 14:43:50

+0

知道你的意思,我也對他們有一些東西....(可能他們跨語言工作等事實.. – SW4 2010-10-26 14:54:26

0

很多時候,你可以通過改變你建立字符串的方式避免後面的逗號乾脆。例如:

$count = 0; 
foreach ($this as $that) { 

    if ($count != 0) { 
     $string .= ','; 
    } 

    $string .= $that['stuff']; 
    $count++; 
} 

無論結果組合如何,都會刪除末尾有逗號的可能性。

+0

Mh,我已經看到了這種模式並自己使用它,但請參閱@ [Mark Ba​​ker]的答案:將這些項分配給一個數組,並將它們與期望的分隔符連接(),這是一個更好,更清潔這樣做的方法。 – Max 2010-10-26 16:19:47

相關問題