2015-10-31 3 views
1
$list = 'Mon,Tue,Wed,Thrs,Fri,Sat,Sun'; 

Есть ли регулярное выражение или функция, которая будет работать следующим образом?Как удалить данный элемент из списка, разделенного запятой?

1)"Tue"  return string ->"Mon,Wed,Thrs,Fri,Sat,Sun" 
2)"Thrs, Mon"  return string ->"Tue,Wed,Fri,Sat,Sun" 
3)"Sun,Wed,Fri"  return string ->"Mon,Tue,Thrs,Sat" 
4)"Fri"  return string ->"Mon,Tue,Wed,Thrs,Sat,Sun" 

Ниже все работает отлично, удаляя только один элемент из строки. Что делать, если я хочу удалить более одного элемента, например, выше?

$input = 'Wed'; 
$list = 'Mon,Tue,Wed,Thrs,Fri,Sat,Sun'; 
    $array1 = Array($input); 
    $array2 = explode(',', $list); 
    $array3 = array_diff($array2, $array1); 

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

    echo $output; 
+0

'функцию removeElement ($ list, $ data) { return implode (',', array_diff (explode (',', $ list), explode (',', $ data))); } echo removeElement ($ list, "Thrs, Mon") ' –

ответ

5

Использование explode на переменной $input, а также:

$input = 'Wed'; 
$list = 'Mon,Tue,Wed,Thrs,Fri,Sat,Sun'; 
$array1 = explode(',', $input); 
$array2 = explode(',', $list); 
$array3 = array_diff($array2, $array1); 

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

echo $output; 
0

вы можете сохранить список в массиве или просто может взорваться, если вы ДНТ хотите

function weekdays($day){ 
    $list= array('Mon','Tue','Wed','Thrs','Fri','Sat','Sun'); 
    if (($key = array_search($day, $list)) !== false) { 
     unset($list[$key]); 
     return $list; 
     } 
    }