Php 如何用逗号分隔(和清理)电子邮件? 情节

Php 如何用逗号分隔(和清理)电子邮件? 情节,php,Php,我正在尝试创建一个函数,从用户输入中获取电子邮件。这些电子邮件应该用逗号隔开,但我们都知道,我们永远不应该相信用户的输入,因此他们可能会在电子邮件地址和逗号之间留出一个空格,或者在逗号后加一个逗号,而不在逗号后加电子邮件 目标 从用户输入获取电子邮件 获取此电子邮件列表,对其进行清理,并将其保存在一个数组中 用户输入证明(他们甚至可以在任何位置放置20个逗号,其间没有电子邮件,但这不会创建数组位置) 我的新手尝试 所以我得到的是: <?php $user_input = 'so@godsn

我正在尝试创建一个函数,从用户输入中获取电子邮件。这些电子邮件应该用逗号隔开,但我们都知道,我们永远不应该相信用户的输入,因此他们可能会在电子邮件地址和逗号之间留出一个空格,或者在逗号后加一个逗号,而不在逗号后加电子邮件

目标
  • 从用户输入获取电子邮件
  • 获取此电子邮件列表,对其进行清理,并将其保存在一个数组中
  • 用户输入证明(他们甚至可以在任何位置放置20个逗号,其间没有电子邮件,但这不会创建数组位置)
  • 我的新手尝试 所以我得到的是:

    <?php
    $user_input = 'so@godsnetwork.com, you@are.com,great@people.com, thank@you.io,,email.com,';
    $email_array = explode( ',', $user_input );
    
    $sanitized_email_string = '';
    $last = end( $email_array );
    
    foreach ($email_array as $i => $email) {
        $email = sanitize_email( $email ); // Returns an empty string if is not a valid email
    
        if ( $email )
            $sanitized_email_string .= $email . ( ( $last === $i ) ? '' : ',' );
    }
    
    $sanitized_array = explode( ',', $sanitized_email_string );
    

    您可以在初次爆炸后立即使用
    阵列过滤器
    对阵列进行消毒。那么以下内容如何:

    $email_array = explode( ',', $user_input );
    $sanitized_array = array_filter( $email_array, 'sanitize_email' );
    

    您可以在初次爆炸后立即使用
    array\u filter
    清理阵列。那么以下内容如何:

    $email_array = explode( ',', $user_input );
    $sanitized_array = array_filter( $email_array, 'sanitize_email' );
    

    忽略电子邮件业务。你拿一根绳子。您可以将字符串分解成一个数组。然后构建一个新字符串。。。然后再次将其分解。为什么如此毫无意义地浪费资源?只需首先构建一个阵列:

    $valid_emails = array();
    foreach ($email_array as $i => $email) {
        $email = sanitize_email( $email );
        if ($email) {
            $valid_emails[] = $email;
        }
    }
    

    如果电子邮件无效,则不会将其推入阵列。

    忽略电子邮件业务。你拿一根绳子。您可以将字符串分解成一个数组。然后构建一个新字符串。。。然后再次将其分解。为什么如此毫无意义地浪费资源?只需首先构建一个阵列:

    $valid_emails = array();
    foreach ($email_array as $i => $email) {
        $email = sanitize_email( $email );
        if ($email) {
            $valid_emails[] = $email;
        }
    }
    

    如果电子邮件无效,它不会被推送到数组中。

    您可以使用
    filter\u var\u array
    ,以及
    array\u filter
    来删除任何
    false

    $email_array = array_map('trim', explode( ',', $user_input ));
    $sanitized_array = array_filter(filter_var_array($email_array, FILTER_VALIDATE_EMAIL));
    

    您可以使用
    filter\u var\u array
    ,以及
    array\u filter
    对其结果进行过滤,以删除任何
    false

    $email_array = array_map('trim', explode( ',', $user_input ));
    $sanitized_array = array_filter(filter_var_array($email_array, FILTER_VALIDATE_EMAIL));