gpt4 book ai didi

php - 我怎样才能简化这个冗余代码?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:00:06 24 4
gpt4 key购买 nike

有人可以帮我简化这段多余的代码吗?

if (isset($to) === true)
{
if (is_string($to) === true)
{
$to = explode(',', $to);
}

$to = array_filter(filter_var_array(preg_replace('~[<>]|%0[ab]|[[:cntrl:]]~i', '', $to), FILTER_VALIDATE_EMAIL));
}

if (isset($cc) === true)
{
if (is_string($cc) === true)
{
$cc = explode(',', $cc);
}

$cc = array_filter(filter_var_array(preg_replace('~[<>]|%0[ab]|[[:cntrl:]]~i', '', $cc), FILTER_VALIDATE_EMAIL));
}

if (isset($bcc) === true)
{
if (is_string($bcc) === true)
{
$bcc = explode(',', $bcc);
}

$bcc = array_filter(filter_var_array(preg_replace('~[<>]|%0[ab]|[[:cntrl:]]~i', '', $bcc), FILTER_VALIDATE_EMAIL));
}

if (isset($from) === true)
{
if (is_string($from) === true)
{
$from = explode(',', $from);
}

$from = array_filter(filter_var_array(preg_replace('~[<>]|%0[ab]|[[:cntrl:]]~i', '', $from), FILTER_VALIDATE_EMAIL));
}

我尝试使用可变变量但没有成功(我已经很长时间没有使用它们了)。

最佳答案

可变变量:

$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 只会导入已设置的变量。所有其他的都被忽略...

顺便说一句:您不需要 === true。 isset() 或 is_string() 将始终返回一个 bool 值。所以 === true 是多余的...

关于php - 我怎样才能简化这个冗余代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2882183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com