PHP Удалить адреса электронной почты из строки, разделенной запятыми
Я пытаюсь удалить письмо из строки, разделенной запятой. У меня есть скрипт, который приносит мне письма. Любой способ сделать это быстро:
$cadena = "Example1@email.com,0001,00005,0010,Example3@email2.com,003";
$cadena = explode(",", $cadena);
foreach($cadena as $res){
if(filter_var($res, FILTER_VALIDATE_EMAIL)){
$result[] = $res;
}
}
Результат:
array(Example1@email.com,Example3@email2.com);
Но мне нужно:
string "0001,00005,0010,003"
2 ответа
Решение
Вы добавляете в свой массив результатов, если он действительно проверяется как электронное письмо, поэтому измените его, чтобы добавить, если он НЕ делает !
проверки:
$cadena = explode(",", $cadena);
foreach($cadena as $res){
if(!filter_var($res, FILTER_VALIDATE_EMAIL)){
$result[] = $res;
}
}
Тогда просто implode()
Это:
$result = implode(',', $result);
Если вы можете рассчитывать на то, что все остальные элементы в строке такие же, как в вашем примере, вместо того, чтобы пытаться найти и удалить электронные письма, вы можете отфильтровать их с помощью is_numeric
,
$result = implode(',', array_filter(explode(',', $cadena), 'is_numeric'));
Если значения, которые вы хотите сохранить, в вашем примере оказались числовыми, не берите в голову.