Php 删除相邻的重复字符

Php 删除相邻的重复字符,php,string,Php,String,我正在尝试删除彼此相邻的重复字符 1,2,3,4,5-有几个逗号,但不能删除 1,2,3,4,5-必须转换为常规的1,2,3,4,5-无论每个数字之间有多少个逗号,我只希望有一个。我有一些类似的东西,确保字符串末尾没有逗号: $n = "1,2,3,4,5"; for ($i=0;$i< strlen($n);$i++) { if (substr($n, -1) == ',') { $n = substr($n, 0, -1); } } $n=“1,2,

我正在尝试删除彼此相邻的重复字符

1,2,3,4,5-有几个逗号,但不能删除 1,2,3,4,5-必须转换为常规的1,2,3,4,5-无论每个数字之间有多少个逗号,我只希望有一个。我有一些类似的东西,确保字符串末尾没有逗号:

$n = "1,2,3,4,5";
for ($i=0;$i< strlen($n);$i++) {

    if (substr($n, -1) == ',') {
        $n = substr($n, 0, -1);
    }
}
$n=“1,2,3,4,5”;
对于($i=0;$i
希望在这件事上能得到一些帮助


谢谢:)

看起来您只想使用逗号来完成此操作,因此使用以下命令非常简单:

此外,还可以替换上面给出的代码,以确保字符串末尾没有逗号。它将更快更容易阅读:

$n = '1,2,3,4,5,,,,,'
rtrim($n, ',');                         // $n == '1,2,3,4,5'
您可以将它们组合成一个衬里:

$n = preg_replace('/,+/', ',', rtrim($n, ','));
这应该适用于紧随其后的任何重复字符

但是,询问者不太可能希望以这种方式替换任何字符重复(包括像44=>4这样的数字)。更可能的情况是,这样的事情是有意的:

$n = preg_replace('/([,.;])\\1+/', '$1', $n); # replace repetitions of ,.:
$n = preg_replace('/([^\d])\\1+/', '$1', $n); # replace repetitions of non-digit characters

你的问题是什么?如果有更好的办法,那就成功了。我真的不知道如何在php中使用正则表达式。现在我知道了:谢谢。@Steve没问题!在PHP中使用正则表达式有几个不同的函数。哦,谢谢你编辑了更多的信息,rtrim几乎完全做到了我最后已经做到的。除了一个逗号外,它的结尾都是逗号。所以我只是用if(substr($n,-1)=','){$n=substr($n,0,-1);来得到最后一个。再次感谢:)}@Steve不客气<代码>rtrim($n,,')
应该去掉结尾处的每个逗号。虽然这可能不是他想要的,但这是他在问题so+1中要求的。这也将删除重复的数字,这是我的问题所在<代码>'1,2,3,44,55'将
1,2,3,4,5
正如@MR周三评论的那样,我已经回答了所问的问题,即使提问者不太可能想要他们所问的:)但是,你的评论非常现实,我会修改答案。
$n = '1,2,,3,,,,,4,5';
$n = preg_replace('/(.)\\1+/', '$1', $n);
$n = preg_replace('/([,.;])\\1+/', '$1', $n); # replace repetitions of ,.:
$n = preg_replace('/([^\d])\\1+/', '$1', $n); # replace repetitions of non-digit characters