这是我的用户列表
james,john,mark,luke,
james,john,mark,luke,mary,david
我想删除重复的部分并保留剩下的部分。
所以这是我的代码
$old = 'james,john,mark,luke,';
$users = 'james,john,mark,luke,mary,david';
// Replace , with |
$expr = rtrim(preg_replace('/\,/', '|', $old), '|');
$newstr = preg_replace("/$expr/i", '', $users);
echo $newstr;
输出
,,,,玛丽,大卫
我想要
玛丽,大卫,
答案 0 :(得分:2)
使用trim
基于您的代码的解决方案:
$old = 'james,john,mark,luke,';
$users = 'james,john,mark,luke,mary,david';
$expr = rtrim(preg_replace('/\,/', '|', $old), '|');
$newstr = preg_replace("/$expr/i", '', $users);
echo trim($newstr, ',');
使用explode
,array_diff
和implode
的更好解决方案:
$old = 'james,john,mark,luke,';
$users = 'james,john,mark,luke,mary,david';
$old_items = explode(',', $old);
$users_items = explode(',', $users);
echo implode(array_diff($users_items, $old_items), ',');
答案 1 :(得分:0)
目前无法对其进行测试,但它不会像那样工作吗?
$old = 'james,john,mark,luke,';
$users = 'james,john,mark,luke,mary,david';
echo preg_replace("/$old/", "", $users); //should print "mary,david"