Удалить элемент из строки через запятую - PullRequest
5 голосов
/ 30 декабря 2011

Допустим, у меня есть строка:

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 ]

17 голосов
/ 30 декабря 2011

Вы имеете в виду функцию, которая удаляет определенный элемент? Попробуйте это:

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

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

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

Демо

8 голосов
/ 30 декабря 2011

Это так же просто, как взорвать строку (str_getcsv) и затем удалить искомый термин.Если у вас есть массив, то array_diff делает его очень простым:

 return array_diff(str_getcsv($list), array($search));
4 голосов
/ 30 декабря 2011

Рабочая демонстрация .

Конвертирует оба строковых ввода в массивы, используя 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...