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

din*_*ist 5 php csv replace

假设我有一个字符串:

cat,mouse,dog,horse
Run Code Online (Sandbox Code Playgroud)

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

    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"
Run Code Online (Sandbox Code Playgroud)

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

Ry-*_*Ry- 17

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

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

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

    return implode(',', $parts);
}
Run Code Online (Sandbox Code Playgroud)

演示


mar*_*rio 8

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

 return array_diff(str_getcsv($list), array($search));
Run Code Online (Sandbox Code Playgroud)


Jos*_*ith 5

工作演示

这会将两个字符串输入都转换为数组,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);
Run Code Online (Sandbox Code Playgroud)