如何在PHP中删除字符串的最后一个字符

5
如何动态从PHP字符串变量中删除最后一个字符?
$string = '10,20,30,';
echo $string;

可用的输出:

10,20,30,

所需输出:

10,20,30

2
echo rtrim($string,','); - Hanky Panky
echo substr($string, 0, strlen($string)-1); - connexo
这是 site:stackoverflow.com end of character PHP 的热门搜索结果之一。此重复问题还提供了其他方法,包括使用正则表达式、mb_substrtrim - Peter Mortensen
一个答案涵盖了无条件地删除最后一个字符(如果按照字面意思写的话,这个问题就是关于这个的):substr($string, 0, -1); - Peter Mortensen
5个回答

7

rtrim($string, ",");可以去掉字符串末尾的逗号。

PHP.net rtrim

trim($string, ",");可以去掉字符串开头和末尾的逗号。

PHP.net trim

如果您正在处理数组,还可以使用implode函数:

PHP.net implode

来自php.net的示例:

<?php
    $array = array('lastname', 'email', 'phone');
    $comma_separated = implode(",", $array);

    echo $comma_separated; // lastname,email,phone

    // Empty string when using an empty array:
    var_dump(implode('hello', array())); // string(0) ""
?>

没错!来吧,你只是复制了我的答案。不过没有什么硬 feelings。看到别人为了得分而努力也挺有趣的。继续加油吧! - RST
不,我考虑使用implode函数,因为这个字符串看起来很像是来自一个数组。 - tchartron
1
@RST:你是什么意思?你在发布你的回答100秒钟后。在剩余的200秒钟(3分20秒)的编辑宽限期内发生了什么事吗? - Peter Mortensen

3

echo substr($string, 0, strlen($string)-1);

这段代码使用了substr和strlen函数。它的作用是输出字符串$string的第一个字符到倒数第二个字符之间的所有字符。

1
为什么要用两个函数,而不是一个函数就可以完成呢?这样做更快吗? - RST
1
如果你不知道要删除的字符怎么办? - connexo
似乎他是的 :) - RST
1
我更喜欢具有通用适用性的方法。 - connexo
1
这是一个更好的解决方案@RST,用户没有提到最后一个字符总是逗号。 - Qarib Haider
显示剩余2条评论

0

是的!我已经得到了一个答案:

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

echo $string;

输出

10,20,30


1
是的,这是rtrim()函数的别名。 - tchartron

0

如果 PHP > 7.1,则

$string[-1] = PHP_EOL;

DEMO


这可能有效,但您能否添加一些内容来证实该声明,例如一个或多个参考文献?根据帮助中心的说法:“始终解释为什么您提出的解决方案是合适的以及它是如何工作的”。请通过编辑(更改)您的答案进行回复,而不是在此处发表评论(不要包括“编辑:”,“更新:”或类似内容 - 答案应该看起来像是今天写的)。 - Peter Mortensen

0

你可以使用 rtrim()

rtrim($string, ',');

但是我认为你的问题在于其他地方。看起来你正在一个for/while/foreach循环中给这个字符串添加选项。
改用下面这种方式:
$string = array[];
foreach ($parts as $part) {
  $string[] = $part;
}
$string = implode($string, ',');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接