Переменные:
$vars = array('to', 'cc', 'bcc', 'from');
foreach ($vars as $varname) {
if (isset($$varname)) {
if (is_string($$varname)) {
$$varname = explode(',', $$varname);
}
$$varname = array_filter(filter_var_array(preg_replace('~[<>]|%0[ab]|[[:cntrl:]]~i', '', $$varname), FILTER_VALIDATE_EMAIL));
}
}
Обычный (без использования переменных переменных):
$vars = compact('to', 'cc', 'bcc', 'from');
foreach ($vars as $name => &$var) {
if (is_string($var)) {
$var = explode(',', $var);
}
$var = array_filter(filter_var_array(preg_replace('~[<>]|%0[ab]|[[:cntrl:]]~i', '', $var), FILTER_VALIDATE_EMAIL));
}
extract ($vars);
Обратите внимание, вам не нужен isset, потому что compact будет импортировать только установленные переменные Все остальные игнорируются ...
Кстати: вам не нужно === правда. isset () или is_string () всегда возвращают логическое значение. Так что === истина избыточна ...