2010-10-26 153 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

相关问题