将php中的邮件列表分离为php数组


Seperate list of emails in php to a php array

我有一个提交到codeigniter电子邮件类并向我的客户发送电子邮件的表单。我有一个简单的to输入域。

<input type="text" name="to" class="form-control">

我希望能够在这一个字段中输入多个电子邮件地址,并一次性向他们发送电子邮件。这是相当简单的编码,我只需要得到电子邮件到一个数组,并在编码中放置to参数。

所以我希望能够键入像下面这样的东西到字段中,提交它,将post数据分解成一个数组,断点是,或逗号。

someone@me.com, yournamehere@example.com, myself@myowndomain.com

上面的内容需要放入像这样的数组中:

$list = array(
   'someone@me.com',
   'yournamehere@example.com',
   'myself@myowndomain.com,
);

我真正的问题是,通过使用,逗号作为断点,将输入字段to中的常规post数据打破为数组的最快和最干净的方法是什么

试一试;它对我来说工作得很好,同时添加preg_replace()来删除所有空白。

另外,还有第二种方法使用过滤方法来帮助防止XSS注入使用PHP的FILTER_VALIDATE_EMAIL过滤器。

<?php 
if(isset($_POST['submit'])){
    $to = $_POST['to'];
    $var = explode(',', $to);
    $me = "you@example.com";
foreach($var as $mailto){
    $mailto = preg_replace('/'s+/', '', $mailto); // remove all whitespace
    $subject = 'Message subject ' . $name; // optional variable
    $message = "Hello there.";
    $headers = "From: {$me}'r'n";
    $headers .= "Reply-To: {$mailto}'r'n";
    mail($mailto, $subject, $message, $headers);
    }
} // brace for isset
?>
<form action="" method="post">
<input type="text" name="to" class="form-control">
<input type="submit" name="submit" value="Send">
</form>

使用PHP的FILTER_VALIDATE_EMAIL过滤器。

<?php 
if(isset($_POST['submit'])){
    $to = $_POST['to'];
    $me = "you@example.com";
    $to = preg_replace('/'s+/', '', $to);
foreach(explode(",", $to) as $mailto){
   if(!filter_var($mailto, FILTER_VALIDATE_EMAIL)) 
       { die("Sorry."); }
else{
    $subject = 'Message subject from ' . $name; // optional variable
    $message = "Hello there.";
    $headers = "From: {$me}'r'n";
    $headers .= "Reply-To: {$mailto}'r'n";
if(mail($mailto, $subject, $message, $headers)){
echo "Mail sent to $mailto ";
            }
        }
    }

} // brace for isset
?>
<form action="" method="post">
<input type="text" name="to" class="form-control">
<input type="submit" name="submit" value="Send">
</form>

使用PHP的explosion()函数。PHP文档中有更体面的手册。这就是思路,但如果你想在后端接收这些用逗号分隔的邮件,你应该使用$_GET或$_POST。

<?php
    //$str = $_POST['emails'];
    $str = "someone@me.com, yournamehere@example.com, myself@myowndomain.com";
    print_r (explode(",",$str));
    ?>

语法:爆炸(分隔符、字符串限制)。在你的例子中,你想要逗号作为分隔符,这就是为什么分隔符应该是逗号。