假设我有一个字符串:
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"
我需要从字符串中删除所选项目并返回字符串的其余部分。
答案 0 :(得分:17)
你的意思是删除某个元素的函数?试试这个:
function removeFromString($str, $item) {
$parts = explode(',', $str);
while(($i = array_search($item, $parts)) !== false) {
unset($parts[$i]);
}
return implode(',', $parts);
}
答案 1 :(得分:8)
就像爆炸字符串(str_getcsv
)然后删除搜索的术语一样简单。如果你有一个数组,那么array_diff
使它非常简单:
return array_diff(str_getcsv($list), array($search));
答案 2 :(得分:4)
这会将两个字符串输入转换为数组,使用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);