如何从字符串中删除不需要的逗号?

时间:2013-06-07 11:51:13

标签: php

如何删除字符串中使用的重复逗号。

String =“,a,b,c ,,, d ,,”

我尝试了rtrim和itrim函数并从开头和结尾删除了不需要的逗号。如何删除重复的逗号?

4 个答案:

答案 0 :(得分:14)

试试这个:

$str = preg_replace('/,{2,}/', ',', trim($str, ','));

trim将删除逗号和尾随逗号,而preg_replace将删除重复的逗号。

See it in action!

另外,正如@Spudley建议的那样,正则表达式/,{2,}/可以替换为/,,+/,它也会起作用。

编辑:

如果逗号之间有空格,您可以尝试在上面的行之后添加以下行:

$str = implode(',', array_map('trim', explode(',', $str)))

答案 1 :(得分:4)

我认为你可以爆炸你的字符串,然后创建一个只获取相关数据的新字符串

$string = ",a,b,c,,,d,,";
$str = explode(",", $string);
$string_new = '';
foreach($str as $data)
{
    if(!empty($data))
    {
        $string_new .= $data. ',';
    }
}
echo substr_replace($string_new, '', -1);

这将输出

a,b,c,d

Live Demo

EDITED

如果您遇到空格问题,可以尝试使用此代码

$string = ",a,b,c, ,,d,,";

$str = explode(",", str_replace(' ', '', $string));
$string_new = '';
foreach($str as $data)
{
    if(!empty($data))
    {
        $string_new .= $data. ',';
    }
}
echo substr_replace($string_new, '', -1);

这应解决空间问题

答案 2 :(得分:2)

可能不是很快,但一个简单的方法可能是:

$str = "a,b,c,,,d";
$str2 = "";
while($str <> $str2) {
    $str2 = $str;
    $str = str_replace(',,', ',', $str);
}

答案 3 :(得分:0)

<?php
$str = ",a,b,c,,,d,,"
echo $str=str_replace(',,','',$str);
?>

<强>输出: 中,a,B,C,d


<?php 
$str = ",a,b,c,,,d,,"
echo $str=trim(str_replace(',,','',$str),',');
?>

<强>输出: A,B,C,d