从逗号分隔的字符串中删除项目

时间:2011-12-30 05:53:44

标签: php replace csv

假设我有一个字符串:

cat,mouse,dog,horse

是否有正则表达式或函数可以如下工作?

    1)"cat"       return string ->"mouse,dog,horse"
    2)"mouse"     return string ->"cat,dog,horse"
    3)"dog"       return string ->"cat,mouse,horse"
    4)"horse"     return string ->"cat,mouse,dog"

我需要从字符串中删除所选项目并返回字符串的其余部分。

3 个答案:

答案 0 :(得分:17)

你的意思是删除某个元素的函数?试试这个:

function removeFromString($str, $item) {
    $parts = explode(',', $str);

    while(($i = array_search($item, $parts)) !== false) {
        unset($parts[$i]);
    }

    return implode(',', $parts);
}

Demo

答案 1 :(得分:8)

就像爆炸字符串(str_getcsv)然后删除搜索的术语一样简单。如果你有一个数组,那么array_diff使它非常简单:

 return array_diff(str_getcsv($list), array($search));

答案 2 :(得分:4)

Working demo

这会将两个字符串输入转换为数组,使用explode()作为列表。然后你只需要array_diff()来输出第二个数组中的内容而不是第一个数组。最后,我们implode()将所有内容恢复为CSV格式。

$input = 'cat';
$list = 'cat,mouse,dog,horse';

$array1 = Array($input);
$array2 = explode(',', $list);
$array3 = array_diff($array2, $array1);

$output = implode(',', $array3);