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