删除字符串中的额外逗号

时间:2014-01-07 19:42:04

标签: php str-replace

我的字符串是这样的

22,31,30

我想从此字符串中删除31,,因此它应该变为:22,30

我正在使用它:

$string = '21,31,30';
$newstring = str_replace("31", "", $string);
echo $newstring = trim($newstring, ",");

但它回应了这个:21,,30

请帮忙!

8 个答案:

答案 0 :(得分:2)

它也将解决你的第一个和最后一个元素问题: 演示:https://eval.in/86932

$string = '31,21,31,30,31';
$newstring = str_replace("31", "", $string);
$newstring =trim(str_replace(",,", ",", $newstring),',');
echo $newstring;

答案 1 :(得分:2)

如何使用数组使其更清洁,便携和可重复使用?

$string = "21,31,30";
$values = explode(",", $string);
$toRemove = '31';

$values = array_filter($values, function($v) use ($toRemove) {
    if ($v != $toRemove) {
        return true;
   }
});

$newString = implode(",", $values);

$ newString现在包含“21,30”

答案 2 :(得分:1)

您在str_replace中遗漏了一个逗号。试试这个

 $newstring = str_replace("31,", "", $string);

如果您需要删除任意元素,可以执行以下操作::

$string='21,31,30';
$array=explode(",",$string);
$index=1; //Will remove the 2nd element of the array;
array_splice($array, $index, 1);
$newstring=implode(",",$array);

答案 3 :(得分:1)

trim仅从字符串的开头或结尾删除字符,而不是从中间删除。

如果您不知道数字后是否会有逗号,特别是如果您想从长列表中删除一堆数字,您可以尝试类似

$string = '21,31,30';
$newstring = str_replace("31", "", $string);
while (strpos($string,",,")
  $string = str_replace(",,",",",$string);

也就是说,删除需要删除的任何数字,然后用一个逗号替换“,,”(双逗号)的任何实例。如果您删除了一堆数字并且最后连续使用了三到四个逗号,那么while就会出现。

答案 4 :(得分:1)

如果您的值将在字符串的末尾,您将have a problem ,并且您将使用修剪功能。试试这个:

$string = '44, 55, 31';
$array = explode(",", $string);

$resultArray = unset($array[array_search('31', $array)]);   //here you delete your 31

$resultstring = implode(",", $resultArray);    //here will be result string without 31

答案 5 :(得分:1)

这将允许您从字符串中删除任何数字,无论它在哪个位置。

$string = "21,14,15,67";
$remove = 14;
$new = array();
$arr = explode(",", $string);
foreach($arr as $val){
    if($val != $remove){
        $new[] = $val;
    }
}
$string = implode(",", $new);
echo $string;

答案 6 :(得分:0)

 $newstring = str_replace("31,", "", $string);

你错过了想要取代的逗号!

答案 7 :(得分:0)

你能确定字符串旁边有逗号吗?如果是,那么您可以执行以下操作:

$string = '21,31,30';
$newstring = str_replace("31", "", $string);
$newstring2 = str_replace(",,", "", $newstring);
echo $newstring2 = trim($newstring2, ",");

以上方法可行(虽然不优雅) - 它会确保如果31周围有逗号,它将删除它。但是,它也会删除任何空的物品,例如“21,30” - 在更换后它将是“21,30”。