拆分多行电子邮件地址条目


splitting multi-line email address entries

我在正确拆分数组时遇到问题。我有一个文本区域输入,允许每行输入一个多个电子邮件地址。一旦输入,我就把它变成一个数组,然后把它们添加到数据库中。以下代码:

$addrs = explode('<br />',nl2br($form['bulk_add_emails']));

这仍然会在电子邮件地址之前的数据库条目中留下换行符,这意味着当我使用运行验证检查时

if(preg_match('/^([a-zA-Z0-9])+([a-zA-Z0-9'._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9'._-]+)+$/', $v)){ ... }

所有的东西都是假的。

我做错了什么?如何正确清理数据?

不要在<br />上调用explode(),也不要调用nl2br()。相反,使用preg_split()可以更灵活地处理换行符(如果有空行,可以处理多行)以及'r'n'n换行符。

// ('r?'n)+ will split on one or more 'n with an optional 'r preceding it.
// ... so empty lines don't result in empty array elements.
$addrs = preg_split('/('r?'n)+/', $form['bulk_add_emails']);
相关文章: