PHP Удалить адреса электронной почты из строки, разделенной запятыми

Я пытаюсь удалить письмо из строки, разделенной запятой. У меня есть скрипт, который приносит мне письма. Любой способ сделать это быстро:

$cadena = "[email protected],0001,00005,0010,[email protected],003";

$cadena = explode(",", $cadena);

foreach($cadena as $res){
if(filter_var($res, FILTER_VALIDATE_EMAIL)){
$result[] = $res;
}
}

Результат:

array([email protected],[email protected]);

Но мне нужно:

string "0001,00005,0010,003"

0

Решение

Вы добавляете в свой массив результатов, если он действительно проверяется как электронное письмо, поэтому измените его, чтобы добавить, если он НЕ делает ! проверки:

$cadena = explode(",", $cadena);

foreach($cadena as $res){
if(!filter_var($res, FILTER_VALIDATE_EMAIL)){
$result[] = $res;
}
}

Тогда просто implode() Это:

$result = implode(',', $result);
4

Другие решения

Если вы можете рассчитывать на то, что все остальные элементы в строке такие же, как в вашем примере, вместо того, чтобы пытаться найти и удалить электронные письма, вы можете отфильтровать их с помощью is_numeric,

$result = implode(',', array_filter(explode(',', $cadena), 'is_numeric'));

Если значения, которые вы хотите сохранить, в вашем примере оказались числовыми, не берите в голову.

1

По вопросам рекламы [email protected]